Class: Grabli
- Inherits:
-
Object
- Object
- Grabli
- Defined in:
- lib/grabli.rb,
lib/grabli/version.rb
Defined Under Namespace
Classes: Intruder
Constant Summary collapse
- PolicyNotFound =
Class.new(StandardError)
- VERSION =
"0.2.0"
Instance Method Summary collapse
-
#allowed?(policy, permission) ⇒ Boolen, Object
Check whether certain permission is allowed.
-
#collect(user, subject) ⇒ Array<Symbol>
Collect allowed policy permissions for the given user.
-
#initialize(namespace: nil) ⇒ Grabli
constructor
You can configure grabli by passing options to initializer.
Constructor Details
#initialize(namespace: nil) ⇒ Grabli
You can configure grabli by passing options to initializer
15 16 17 |
# File 'lib/grabli.rb', line 15 def initialize(namespace: nil) @namespace = namespace end |
Instance Method Details
#allowed?(policy, permission) ⇒ Boolen, Object
Check whether certain permission is allowed.
59 60 61 62 63 |
# File 'lib/grabli.rb', line 59 def allowed?(policy, ) result = policy.public_send() return !policy.record.intruded if policy.record.is_a?(Intruder) result end |
#collect(user, subject) ⇒ Array<Symbol>
Collect allowed policy permissions for the given user.
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/grabli.rb', line 33 def collect(user, subject) policy_class(subject) .tap { |policy| raise PolicyNotFound if policy.nil? } .public_instance_methods(false) .reject { |n| n =~ /permitted_attributes/ } .each_with_object([]) do |, collection| # allows to collect permissions without subject, for more see Intruder isubject = subject.is_a?(Symbol) ? Intruder.new(false) : subject policy = policy_class(subject).new(user, isubject) collection << if allowed? policy, end end |