Sha256: b509e423c45f53395ef81c8fe39165ac9d60839000f52feb1d56119337160490

Contents?: true

Size: 600 Bytes

Versions: 10

Compression:

Stored size: 600 Bytes

Contents

require "godmin/authorization/policy"
require "godmin/authorization/policy_finder"

module Godmin
  module Authorization
    extend ActiveSupport::Concern

    included do
      helper_method :policy
    end

    def authorize(record)
      policy = policy(record)

      unless policy.public_send(action_name + "?")
        raise NotAuthorizedError
      end
    end

    def policy(record)
      policies[record] ||= PolicyFinder.find(record).constantize.new(admin_user, record)
    end

    def policies
      @_policies ||= {}
    end

    class NotAuthorizedError < StandardError; end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
godmin-0.9.9 lib/godmin/authorization.rb
godmin-0.9.8 lib/godmin/authorization.rb
godmin-0.9.7 lib/godmin/authorization.rb
godmin-0.9.6 lib/godmin/authorization.rb
godmin-0.9.5 lib/godmin/authorization.rb
godmin-0.9.4 lib/godmin/authorization.rb
godmin-0.9.3 lib/godmin/authorization.rb
godmin-0.9.2 lib/godmin/authorization.rb
godmin-0.9.1 lib/godmin/authorization.rb
godmin-0.9.0 lib/godmin/authorization.rb