Module: CommandProposal::PermissionsHelper

Included in:
IterationsController, RunnerController, Services::CommandInterpreter, TasksController
Defined in:
app/helpers/command_proposal/permissions_helper.rb

Instance Method Summary collapse

Instance Method Details

#approval_required?(task_type = nil) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
28
29
30
31
32
# File 'app/helpers/command_proposal/permissions_helper.rb', line 25

def approval_required?(task_type=nil)
  return false unless cmd_config.approval_required?
  return true if task_type.blank?

  skips = cmd_config.skip_approval_for_types.presence || []

  Array.wrap(skips).map(&:to_sym).exclude?(task_type.to_sym)
end

#can_approve?(iteration) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
16
# File 'app/helpers/command_proposal/permissions_helper.rb', line 10

def can_approve?(iteration)
  return false unless permitted_to_use?
  return true unless approval_required?(iteration.task.session_type)
  return if iteration.nil?

  command_user.try("#{cmd_config.role_scope}?") && !current_is_author?(iteration)
end

#can_command?(user = command_user) ⇒ Boolean

Returns:

  • (Boolean)


3
4
5
6
7
8
# File 'app/helpers/command_proposal/permissions_helper.rb', line 3

def can_command?(user=command_user)
  return false unless permitted_to_use?
  return true unless approval_required?

  command_user.try("#{cmd_config.role_scope}?")
end

#cmd_configObject



58
59
60
# File 'app/helpers/command_proposal/permissions_helper.rb', line 58

def cmd_config
  ::CommandProposal.configuration
end

#command_user(user = nil) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
# File 'app/helpers/command_proposal/permissions_helper.rb', line 46

def command_user(user=nil)
  @command_user ||= begin
    if user.present?
      user
    elsif cmd_config.controller_var.blank?
      nil
    else
      send(cmd_config.controller_var)
    end
  end
end

#current_is_author?(iteration) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
37
38
# File 'app/helpers/command_proposal/permissions_helper.rb', line 34

def current_is_author?(iteration)
  return false unless permitted_to_use?

  command_user&.id == iteration&.requester&.id
end

#has_approval?(task) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
21
22
23
# File 'app/helpers/command_proposal/permissions_helper.rb', line 18

def has_approval?(task)
  return false unless permitted_to_use?
  return true unless approval_required?(task.session_type)

  task&.approved?
end

#permitted_to_use?Boolean

Returns:

  • (Boolean)


40
41
42
43
44
# File 'app/helpers/command_proposal/permissions_helper.rb', line 40

def permitted_to_use?
  return true if cmd_config.controller_var.blank?

  command_user&.send("#{cmd_config.role_scope}?")
end