Class: AccessPolicy::PolicyEnforcer
- Inherits:
-
Object
- Object
- AccessPolicy::PolicyEnforcer
- Defined in:
- lib/access_policy/policy_enforcer.rb
Defined Under Namespace
Classes: NotAuthorizedError, NotDefinedError
Instance Attribute Summary collapse
-
#current_user_or_role ⇒ Object
Returns the value of attribute current_user_or_role.
-
#default_error_policy ⇒ Object
Returns the value of attribute default_error_policy.
-
#object_or_class ⇒ Object
Returns the value of attribute object_or_class.
-
#query ⇒ Object
Returns the value of attribute query.
Instance Method Summary collapse
- #authorize(error_policy = default_error_policy) ⇒ Object
-
#initialize(current_user_or_role, object_or_class, query = nil, default_error_policy = ->(*) { raise }) ⇒ PolicyEnforcer
constructor
A new instance of PolicyEnforcer.
- #policy(error_policy = default_error_policy) ⇒ Object
Constructor Details
#initialize(current_user_or_role, object_or_class, query = nil, default_error_policy = ->(*) { raise }) ⇒ PolicyEnforcer
Returns a new instance of PolicyEnforcer.
10 11 12 13 14 15 16 17 18 |
# File 'lib/access_policy/policy_enforcer.rb', line 10 def initialize(current_user_or_role, object_or_class, query=nil, default_error_policy=->(*) { raise }) raise NotDefinedError, 'unable to find policy class for anonymous classes' if class_to_guard(object_or_class).name.nil? || class_to_guard(object_or_class).name.length < 1 self.current_user_or_role = current_user_or_role self.object_or_class = object_or_class self.query = query self.default_error_policy = default_error_policy end |
Instance Attribute Details
#current_user_or_role ⇒ Object
Returns the value of attribute current_user_or_role.
8 9 10 |
# File 'lib/access_policy/policy_enforcer.rb', line 8 def current_user_or_role @current_user_or_role end |
#default_error_policy ⇒ Object
Returns the value of attribute default_error_policy.
8 9 10 |
# File 'lib/access_policy/policy_enforcer.rb', line 8 def default_error_policy @default_error_policy end |
#object_or_class ⇒ Object
Returns the value of attribute object_or_class.
8 9 10 |
# File 'lib/access_policy/policy_enforcer.rb', line 8 def object_or_class @object_or_class end |
#query ⇒ Object
Returns the value of attribute query.
8 9 10 |
# File 'lib/access_policy/policy_enforcer.rb', line 8 def query @query end |
Instance Method Details
#authorize(error_policy = default_error_policy) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/access_policy/policy_enforcer.rb', line 20 def (error_policy=default_error_policy) raise(PolicyEnforcer::NotAuthorizedError, "not allowed to #{query} this #{object_or_class}" ) unless _guard_action() yield true if block_given? true rescue error_policy.call(object_or_class) end |
#policy(error_policy = default_error_policy) ⇒ Object
28 29 30 31 32 |
# File 'lib/access_policy/policy_enforcer.rb', line 28 def policy(error_policy=default_error_policy) specific_policy_for_class.new(current_user_or_role, object_or_class) rescue error_policy.call(object_or_class) end |