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