Sha256: 446601a8348957c141ce59b6e243b532ec90d63fb496ff475f3912a4f499edea

Contents?: true

Size: 1.38 KB

Versions: 5

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

module Decidim
  module Plans
    module Admin
      class Permissions < Decidim::DefaultPermissions
        def permissions
          return permission_action unless user

          return permission_action if permission_action.scope != :admin

          toggle_allow(admin_plan_answering_is_enabled?) if
            permission_action.action == :create &&
            permission_action.subject == :plan_answer

          return permission_action if permission_action.subject != :plan &&
                                      permission_action.subject != :plans &&
                                      permission_action.subject != :section &&
                                      permission_action.subject != :sections

          case permission_action.action
          when :create, :export_budgets
            permission_action.allow!
          when :edit, :update, :destroy
            permission_action.allow! if plan.present? || section.present?
          when :close
            permission_action.allow! if plan.present?
          end

          permission_action
        end

        private

        def plan
          @plan ||= context.fetch(:plan, nil)
        end

        def admin_plan_answering_is_enabled?
          current_settings.try(:plan_answering_enabled) &&
            component_settings.try(:plan_answering_enabled)
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
decidim-plans-0.16.6 app/permissions/decidim/plans/admin/permissions.rb
decidim-plans-0.16.5 app/permissions/decidim/plans/admin/permissions.rb
decidim-plans-0.16.4 app/permissions/decidim/plans/admin/permissions.rb
decidim-plans-0.16.3 app/permissions/decidim/plans/admin/permissions.rb
decidim-plans-0.16.2 app/permissions/decidim/plans/admin/permissions.rb