class Robotnik::Authorization::Law
Attributes
statuses[R]
Public Class Methods
define(&block)
click to toggle source
# File lib/stasi/authorization/law.rb, line 9 def self.define &block @@law = self.new.evaluate(&block) end
law()
click to toggle source
# File lib/stasi/authorization/law.rb, line 17 def self.law @@law end
new()
click to toggle source
# File lib/stasi/authorization/law.rb, line 25 def initialize @statuses = [] end
reset!()
click to toggle source
# File lib/stasi/authorization/law.rb, line 13 def self.reset! @@law = nil end
Public Instance Methods
can?(action, resource, options)
click to toggle source
# File lib/stasi/authorization/law.rb, line 37 def can? action, resource, options verdict = false statuses.each do |status| if status == :default || status.to_proc.call(options[:agent]) verdict = rules[status].can? action.to_sym, resource, options end end verdict end
default(&block)
click to toggle source
# File lib/stasi/authorization/law.rb, line 33 def default &block status :default, &block end
status(method, &block)
click to toggle source
# File lib/stasi/authorization/law.rb, line 29 def status method, &block init_role_for(method).evaluate &block end
Private Instance Methods
init_role_for(method)
click to toggle source
# File lib/stasi/authorization/law.rb, line 53 def init_role_for method rules[method] ||= begin @statuses << method Robotnik::Authorization::Status.new end end
rules()
click to toggle source
# File lib/stasi/authorization/law.rb, line 49 def rules @rules ||= {} end