class YouShallNotPass::Authorizator
Public Class Methods
new(**attrs)
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 6 def initialize(**attrs) attrs.each do |attr, value| send attr, value end end
Private Class Methods
__dsl_policies__()
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 79 def self.__dsl_policies__ @__dsl_policies__ ||= {} end
attribute(attr)
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 59 def self.attribute(attr) fattr attr end
policy(name, &block)
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 55 def self.policy(name, &block) __dsl_policies__[name] = proc { block } end
Public Instance Methods
can?(permission, **args)
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 12 def can?(permission, **args) Array(policies.fetch(permission)).all? do |policy| Callable(policy).call(**args) == true end end
can_all?(*permissions, **args)
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 18 def can_all?(*permissions, **args) permissions.all? { |permission| can?(permission, **args)} end
can_any?(*permissions, **args)
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 22 def can_any?(*permissions, **args) permissions.any? { |permission| can?(permission, **args)} end
perform_if(permission, **args) { || ... }
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 26 def perform_if(permission, **args) yield if can?(permission, **args) end
perform_if_all(*permissions, **args) { || ... }
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 34 def perform_if_all(*permissions, **args) yield if can_all?(*permissions, **args) end
perform_if_any(*permissions, **args) { || ... }
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 42 def perform_if_any(*permissions, **args) yield if can_any?(*permissions, **args) end
perform_unless(permission, **args) { || ... }
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 30 def perform_unless(permission, **args) yield unless can?(permission, **args) end
perform_unless_all(*permissions, **args) { || ... }
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 38 def perform_unless_all(*permissions, **args) yield unless can_all?(*permissions, **args) end
perform_unless_any(*permissions, **args) { || ... }
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 46 def perform_unless_any(*permissions, **args) yield unless can_any?(*permissions, **args) end
policies()
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 50 def policies @policies ||= __set_policies__ end
Private Instance Methods
__dsl_policies__()
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 73 def __dsl_policies__ self.class.__dsl_policies__. each_with_object({}) { |(name, value), res| res[name] = instance_eval(&value) } end
__method_policies__()
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 68 def __method_policies__ methods.grep(/_policies\z/). each_with_object({}) { |name, res| res.merge!(send(name)) } end
__set_policies__()
click to toggle source
# File lib/you_shall_not_pass/authorizator.rb, line 64 def __set_policies__ __method_policies__.merge!(__dsl_policies__) end