Sha256: f2dfd99fa91d8e5df31b4eb5c7c2c9992ab2cd645244ac50a9a5b815c09ab117

Contents?: true

Size: 918 Bytes

Versions: 4

Compression:

Stored size: 918 Bytes

Contents

# frozen_string_literal: true

module Decidim
  module Initiatives
    module Abilities
      module Admin
        # Defines the abilities related to admin users able to administer
        # promotal committee membership requests.
        # Intended to be used with `cancancan`.
        class CommitteeAdminAbility
          include CanCan::Ability

          attr_reader :user, :context

          def initialize(user, context)
            return unless user&.admin?

            @user = user
            @context = context

            can :manage_membership, Decidim::Initiative
            can :index, InitiativesCommitteeMember

            can :approve, InitiativesCommitteeMember do |request|
              !request.accepted?
            end

            can :revoke, InitiativesCommitteeMember do |request|
              !request.rejected?
            end
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
decidim-initiatives-0.11.2 app/models/decidim/initiatives/abilities/admin/committee_admin_ability.rb
decidim-initiatives-0.11.1 app/models/decidim/initiatives/abilities/admin/committee_admin_ability.rb
decidim-initiatives-0.11.0.pre1 app/models/decidim/initiatives/abilities/admin/committee_admin_ability.rb
decidim-initiatives-0.9.1 app/models/decidim/initiatives/abilities/admin/committee_admin_ability.rb