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