Sha256: 041d6406ca63bf9c1e55389205cfec65c87d17689482dbf4911644db5d4beeea

Contents?: true

Size: 1.23 KB

Versions: 2

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true
module Decidim
  module Admin
    module Abilities
      # Defines the abilities for a user in the admin section. Intended to be
      # used with `cancancan`.
      class AdminUser
        include CanCan::Ability

        def initialize(user)
          return unless user
          return unless user.role?(:admin)

          can :manage, ParticipatoryProcess
          can :manage, ParticipatoryProcessStep
          can :manage, Category
          can :manage, ParticipatoryProcessUserRole
          can [:create, :update, :index, :new, :read], StaticPage
          can [:update_slug, :destroy], [StaticPage, StaticPageForm] do |page|
            !StaticPage.default?(page.slug)
          end
          can [:read, :update], Decidim::Organization do |organization|
            organization == user.organization
          end

          can :manage, Feature
          can :read, :admin_dashboard
          can :manage, ParticipatoryProcessAttachment
          can :manage, Scope
          can [:create, :index, :new, :read, :invite], User
          can [:destroy], [User] do |user_to_destroy|
            user != user_to_destroy
          end

          can [:index, :verify], UserGroup
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
decidim-admin-0.0.2 app/models/decidim/admin/abilities/admin_user.rb
decidim-0.0.2 decidim-admin/app/models/decidim/admin/abilities/admin_user.rb