Sha256: 934e2c91ef03d13ba1a36394513fd6efdbaa255587c2916b4cec1a78ab91bda7

Contents?: true

Size: 1.68 KB

Versions: 47

Compression:

Stored size: 1.68 KB

Contents

module LucidAuthorization
  module Mixin
    def record_authorization_reason
      @_isomorfeus_record_authorization_reason = true
    end

    def stop_to_record_authorization_reason
      @_isomorfeus_record_authorization_reason = false
      @_isomorfeus_authorization_reason = nil
    end

    def authorization_reason
      @_isomorfeus_authorization_reason
    end

    def authorized?(target_class, target_method = nil, props = nil)
      begin
        class_name = self.class.name
        class_name = class_name.split('>::').last if class_name.start_with?('#<')
        policy_class = Isomorfeus.cached_policy_class("#{class_name}Policy")
      rescue ::NameError
        policy_class = nil
      end
      return false unless policy_class
      policy_instance = policy_class.new(self, @_isomorfeus_record_authorization_reason)
      result = policy_instance.authorized?(target_class, target_method, props)
      @_isomorfeus_authorization_reason = policy_instance.reason
      result
    end

    def authorized!(target_class, target_method = nil, props = nil)
      class_name = self.class.name
      class_name = class_name.split('>::').last if class_name.start_with?('#<')
      policy_class = Isomorfeus.cached_policy_class("#{class_name}Policy")
      Isomorfeus.raise_error(error_class: LucidPolicy::Exception, message: "#{self}: policy class #{class_name}Policy not found!") unless policy_class
      policy_instance = policy_class.new(self, @_isomorfeus_record_authorization_reason)
      result = policy_instance.authorized!(target_class, target_method, props)
      @_isomorfeus_authorization_reason = policy_instance.reason
      result
    end
  end
end

Version data entries

47 entries across 47 versions & 1 rubygems

Version Path
isomorfeus-policy-2.0.16 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.15 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.14 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.13 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.12 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.11 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.10 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.9 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.8 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.7 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.6 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.5 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.4 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.3 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.2 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.1 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.0 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.0.rc10 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.0.rc9 lib/isomorfeus_policy/lucid_authorization/mixin.rb
isomorfeus-policy-2.0.0.rc8 lib/isomorfeus_policy/lucid_authorization/mixin.rb