Sha256: fc25c8a0edc65e7405721a2776fed2858e6f4fdf947c7531b27c65c152c20e36

Contents?: true

Size: 910 Bytes

Versions: 3

Compression:

Stored size: 910 Bytes

Contents

# frozen_string_literal: true

module Decidim
  module Consultations
    module Abilities
      module Admin
        # Defines the abilities related to user able to administer consultations.
        # Intended to be used with `cancancan`.
        class ConsultationAdminAbility
          include CanCan::Ability

          attr_reader :user, :context

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

            @user = user
            @context = context

            can :manage, Consultation

            cannot :publish_results, Consultation
            can :publish_results, Consultation do |consultation|
              consultation.finished? && !consultation.results_published?
            end

            cannot :unpublish_results, Consultation
            can :unpublish_results, Consultation, &:results_published?
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
decidim-consultations-0.11.2 app/models/decidim/consultations/abilities/admin/consultation_admin_ability.rb
decidim-consultations-0.11.1 app/models/decidim/consultations/abilities/admin/consultation_admin_ability.rb
decidim-consultations-0.11.0.pre1 app/models/decidim/consultations/abilities/admin/consultation_admin_ability.rb