Class: Decidim::TimeTracker::Admin::Permissions

Inherits:
DefaultPermissions
  • Object
show all
Defined in:
app/permissions/decidim/time_tracker/admin/permissions.rb

Instance Method Summary collapse

Instance Method Details

#allowed_activity_action?Boolean

Returns:

  • (Boolean)


43
44
45
46
47
48
49
50
# File 'app/permissions/decidim/time_tracker/admin/permissions.rb', line 43

def allowed_activity_action?
  return unless permission_action.subject.in? [:activity, :activities]

  case permission_action.action
  when :index, :create, :update, :destroy
    permission_action.allow!
  end
end

#allowed_assignation_action?Boolean

Returns:

  • (Boolean)


52
53
54
55
56
57
58
59
60
61
# File 'app/permissions/decidim/time_tracker/admin/permissions.rb', line 52

def allowed_assignation_action?
  return unless permission_action.subject.in? [:assignation, :assignations]

  case permission_action.action
  when :update
    permission_action.allow! if assignation.can_change_status?
  when :index, :create, :destroy
    permission_action.allow!
  end
end

#allowed_questionnaire_action?Boolean

Returns:

  • (Boolean)


27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/permissions/decidim/time_tracker/admin/permissions.rb', line 27

def allowed_questionnaire_action?
  return unless permission_action.subject.in? [:questionnaire, :questionnaire_answers]

  if permission_action.subject == :questionnaire
    case permission_action.action
    when :export_answers, :update, :preview
      permission_action.allow!
    end
  elsif permission_action.subject == :questionnaire_answers
    case permission_action.action
    when :show, :index, :export_response
      permission_action.allow!
    end
  end
end

#allowed_task_action?Boolean

Returns:

  • (Boolean)


18
19
20
21
22
23
24
25
# File 'app/permissions/decidim/time_tracker/admin/permissions.rb', line 18

def allowed_task_action?
  return unless permission_action.subject.in? [:task, :tasks]

  case permission_action.action
  when :index, :create, :update, :destroy
    permission_action.allow!
  end
end

#assignationObject



63
64
65
# File 'app/permissions/decidim/time_tracker/admin/permissions.rb', line 63

def assignation
  @assignation ||= context.fetch(:assignation, nil)
end

#permissionsObject



7
8
9
10
11
12
13
14
15
16
# File 'app/permissions/decidim/time_tracker/admin/permissions.rb', line 7

def permissions
  return permission_action if permission_action.scope != :admin

  allowed_task_action?
  allowed_questionnaire_action?
  allowed_activity_action?
  allowed_assignation_action?

  permission_action
end