Class: Decidim::Admin::Abilities::ParticipatoryProcessAdmin

Inherits:
Object
  • Object
show all
Includes:
CanCan::Ability
Defined in:
decidim-admin/app/models/decidim/admin/abilities/participatory_process_admin.rb

Overview

Defines the abilities for a participatory process admin in the admin section. Intended to be used with ‘cancancan`. This is not intended to extend the base `Decidim::Ability` class, it should only be used in the Admin engine.

This ability will not apply to organization admins.

Instance Method Summary collapse

Constructor Details

#initialize(user, _context) ⇒ ParticipatoryProcessAdmin

Returns a new instance of ParticipatoryProcessAdmin.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'decidim-admin/app/models/decidim/admin/abilities/participatory_process_admin.rb', line 15

def initialize(user, _context)
  @user = user

  return unless user && !user.role?(:admin) && !user.role?(:collaborator)

  can :read, :admin_dashboard do
    participatory_processes.any?
  end

  can :manage, ParticipatoryProcess do |process|
    participatory_processes.include?(process)
  end

  cannot :create, ParticipatoryProcess
  cannot :destroy, ParticipatoryProcess

  cannot :manage, :admin_users

  can :manage, ParticipatoryProcessUserRole do |role|
    role.user != user
  end

  can :manage, Moderation do |moderation|
    participatory_processes.include?(moderation.participatory_process)
  end

  can :manage, Attachment do |attachment|
    participatory_processes.include?(attachment.attached_to)
  end

  can :manage, ParticipatoryProcessStep do |step|
    participatory_processes.include?(step.participatory_process)
  end

  can :manage, Feature do |feature|
    participatory_processes.include?(feature.participatory_process)
  end

  can :manage, Category do |category|
    participatory_processes.include?(category.participatory_process)
  end
end

Instance Method Details

#participatory_processesObject



58
59
60
# File 'decidim-admin/app/models/decidim/admin/abilities/participatory_process_admin.rb', line 58

def participatory_processes
  @participatory_processes ||= ManageableParticipatoryProcessesForUser.for(@user)
end