Sha256: 9bab49eca45ef5b9776a64fb0f09e783d7d29814e62b033176b143d4325d4971

Contents?: true

Size: 1.29 KB

Versions: 3

Compression:

Stored size: 1.29 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
            permission_action.allow!
          when :edit, :update, :destroy
            permission_action.allow! if plan.present? || section.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

3 entries across 3 versions & 1 rubygems

Version Path
decidim-plans-0.16.0 app/permissions/decidim/plans/admin/permissions.rb
decidim-plans-0.15.1 app/permissions/decidim/plans/admin/permissions.rb
decidim-plans-0.15.0 app/permissions/decidim/plans/admin/permissions.rb