Class: Robotnik::Authorization::Law

Inherits:
Object
  • Object
show all
Includes:
DslEval
Defined in:
lib/stasi/authorization/law.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLaw

Returns a new instance of Law.



25
26
27
# File 'lib/stasi/authorization/law.rb', line 25

def initialize
  @statuses = []
end

Instance Attribute Details

#statusesObject (readonly)

— Instance methods —#



23
24
25
# File 'lib/stasi/authorization/law.rb', line 23

def statuses
  @statuses
end

Class Method Details

.define(&block) ⇒ Object



9
10
11
# File 'lib/stasi/authorization/law.rb', line 9

def self.define &block
  @@law = self.new.evaluate(&block)
end

.lawObject



17
18
19
# File 'lib/stasi/authorization/law.rb', line 17

def self.law
  @@law
end

.reset!Object



13
14
15
# File 'lib/stasi/authorization/law.rb', line 13

def self.reset!
  @@law = nil
end

Instance Method Details

#can?(action, resource, options) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
40
41
42
43
44
45
# 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) ⇒ Object



33
34
35
# File 'lib/stasi/authorization/law.rb', line 33

def default &block
  status :default, &block
end

#status(method, &block) ⇒ Object



29
30
31
# File 'lib/stasi/authorization/law.rb', line 29

def status method, &block
  init_role_for(method).evaluate &block
end