class Bali::Role
Constants
- IDENTIFIER_CLASSES
- RIGHTS
Attributes
can_all[RW]
can_all?[RW]
cans[RW]
cants[RW]
name[RW]
right_level[RW]
scope[R]
Public Class Methods
extract_roles_from_object(object)
click to toggle source
# File lib/bali/role.rb, line 31 def self.extract_roles_from_object(object) method_name = object.class.role_field_for_authorization method_name ? formalize(object.send(method_name)) : formalize(nil) end
formalize(object)
click to toggle source
# File lib/bali/role.rb, line 23 def self.formalize(object) case object when *IDENTIFIER_CLASSES then [object] when Array then (object.count == 0 ? nil : object) else formalize(extract_roles_from_object(object)) end end
new(name)
click to toggle source
# File lib/bali/role.rb, line 39 def initialize(name) @name = name.to_sym if name @right_level = INHERIT @cans = {} @cants = {} end
Public Instance Methods
<<(rule)
click to toggle source
DSL METHODS
# File lib/bali/role.rb, line 88 def << rule operation = rule.operation.to_sym if rule.term == :cant cants[operation] = rule cans.delete operation else cans[operation] = rule cants.delete operation end end
add(term, *operations, block)
click to toggle source
# File lib/bali/role.rb, line 79 def add(term, *operations, block) operations.each do |operation| rule = Bali::Rule.new(term, operation) rule.conditional = block if block self << rule end end
can(*args, &block)
click to toggle source
DSL METHODS
# File lib/bali/role.rb, line 56 def can(*args, &block) add :can, *args, block end
cant(*args, &block)
click to toggle source
# File lib/bali/role.rb, line 60 def cant(*args, &block) add :cant, *args, block end
cant_all()
click to toggle source
# File lib/bali/role.rb, line 68 def cant_all @right_level = DEFAULT_DENY end
cant_all?()
click to toggle source
# File lib/bali/role.rb, line 51 def cant_all? right_level == DEFAULT_DENY end
find_rule(term, operation)
click to toggle source
# File lib/bali/role.rb, line 100 def find_rule(term, operation) case term when :can then cans[operation.to_sym] when :cant then cants[operation.to_sym] end end
rules()
click to toggle source
# File lib/bali/role.rb, line 107 def rules cans.values + cants.values end