Class: Decidim::TimeTracker::Permissions

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

Instance Method Summary collapse

Instance Method Details

#allow_answer?Boolean

Returns:

  • (Boolean)


28
29
30
31
32
# File 'app/permissions/decidim/time_tracker/permissions.rb', line 28

def allow_answer?
  return unless permission_action.action == :answer

  allow! if current_component&.published?
end

#allow_assignation?Boolean

Returns:

  • (Boolean)


34
35
36
37
38
39
40
41
42
43
44
# File 'app/permissions/decidim/time_tracker/permissions.rb', line 34

def allow_assignation?
  return allow! unless activity

  if permission_action.action == :create
    return if activity.has_assignation? user

    return unless activity.status.in? [:open, :not_started]

    allow!
  end
end

#allow_milestone?Boolean

Returns:

  • (Boolean)


46
47
48
49
50
51
52
53
54
55
56
# File 'app/permissions/decidim/time_tracker/permissions.rb', line 46

def allow_milestone?
  return unless activity

  if permission_action.action == :create
    return unless activity.assignation_accepted? user

    return if activity.status.in? [:inactive]

    allow!
  end
end

#permissionsObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/permissions/decidim/time_tracker/permissions.rb', line 6

def permissions
  # for the moment, we let public views for milestones
  allow! if permission_action.subject == :milestone && permission_action.action == :show

  return permission_action unless user

  return Decidim::TimeTracker::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin

  case permission_action.subject
  when :questionnaire
    allow_answer?
  when :assignation
    allow_assignation?
  when :milestone
    allow_milestone?
  else
    allow!
  end

  permission_action
end