Sha256: 429bda22ea9b7740f37585ceb2bb3a2af1d7f59e6af5048aa3b21a4f5b7f97ed

Contents?: true

Size: 903 Bytes

Versions: 12

Compression:

Stored size: 903 Bytes

Contents

module Administrate
  module Punditize
    if Object.const_defined?("Pundit")
      extend ActiveSupport::Concern
      include Pundit

      included do
        def scoped_resource
          policy_scope_admin super
        end

        def authorize_resource(resource)
          authorize resource
        end

        def show_action?(action, resource)
          Pundit.policy!(pundit_user, resource).send("#{action}?".to_sym)
        end
      end

      private

      # Like the policy_scope method in stock Pundit, but allows the 'resolve'
      # to be overridden by 'resolve_admin' for a different index scope in Admin
      # controllers.
      def policy_scope_admin(scope)
        ps = Pundit::PolicyFinder.new(scope).scope!.new(pundit_user, scope)
        if ps.respond_to? :resolve_admin
          ps.resolve_admin
        else
          ps.resolve
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
administrate-0.17.0 app/controllers/concerns/administrate/punditize.rb
administrate-0.16.0 app/controllers/concerns/administrate/punditize.rb
administrate-0.15.0 app/controllers/concerns/administrate/punditize.rb
administrate-0.14.0 app/controllers/concerns/administrate/punditize.rb
viniBaxterDesk-22.0.0 app/controllers/concerns/administrate/punditize.rb
viniBaxterDesk-0.21.0 app/controllers/concerns/administrate/punditize.rb
viniBaxterDesk-0.20.0 app/controllers/concerns/administrate/punditize.rb
viniBaxterDesk-0.14.0 app/controllers/concerns/administrate/punditize.rb
viniBaxterDesk-0.13.2 app/controllers/concerns/administrate/punditize.rb
viniBaxterDesk-0.13.1 app/controllers/concerns/administrate/punditize.rb
administrate-0.13.0 app/controllers/concerns/administrate/punditize.rb
administrate-0.12.0 app/controllers/concerns/administrate/punditize.rb