class Authorization::DevelopmentSupport::AnalyzerEngine::Role

Attributes

role[R]

Public Class Methods

all(engine) click to toggle source
# File lib/declarative_authorization/development_support/development_support.rb, line 125
def self.all (engine)
  rules_by_role = engine.auth_rules.inject({}) do |memo, rule|
    memo[rule.role] ||= []
    memo[rule.role] << rule
    memo
  end
  engine.roles.collect do |role|
    new(role, (rules_by_role[role] || []).
          collect {|rule| Rule.new(rule, engine)}, engine)
  end
end
all_for_privilege(privilege, context, engine) click to toggle source
# File lib/declarative_authorization/development_support/development_support.rb, line 136
def self.all_for_privilege (privilege, context, engine)
  privilege = privilege.is_a?(Symbol) ? Privilege.for_sym(privilege, engine) : privilege
  privilege_symbols = ([privilege] + privilege.ancestors).map(&:to_sym)
  all(engine).select {|role| role.rules.any? {|rule| rule.matches?([role.to_sym], privilege_symbols, context)}}.
      collect {|role| [role] + role.descendants}.flatten.uniq
end
for_sym(role_sym, engine) click to toggle source
# File lib/declarative_authorization/development_support/development_support.rb, line 121
def self.for_sym (role_sym, engine)
  @@role_objects[[role_sym, engine]] ||= new(role_sym, nil, engine)
end
new(role, rules, engine) click to toggle source
# File lib/declarative_authorization/development_support/development_support.rb, line 81
def initialize (role, rules, engine)
  @role = role
  @rules = rules
  @engine = engine
end

Public Instance Methods

ancestors(role_symbol = nil) click to toggle source

ancestors' privileges are included in in the current role

# File lib/declarative_authorization/development_support/development_support.rb, line 95
def ancestors (role_symbol = nil)
  role_symbol ||= @role
  (@engine.role_hierarchy[role_symbol] || []).
      collect {|lower_role| ancestors(lower_role) }.flatten +
    (role_symbol == @role ? [] : [Role.for_sym(role_symbol, @engine)])
end
descendants(role_symbol = nil) click to toggle source
# File lib/declarative_authorization/development_support/development_support.rb, line 101
def descendants (role_symbol = nil)
  role_symbol ||= @role
  (@engine.rev_role_hierarchy[role_symbol] || []).
      collect {|higher_role| descendants(higher_role) }.flatten +
    (role_symbol == @role ? [] : [Role.for_sym(role_symbol, @engine)])
end
rules() click to toggle source
# File lib/declarative_authorization/development_support/development_support.rb, line 108
def rules
  @rules ||= @engine.auth_rules.select {|rule| rule.role == @role}.
      collect {|rule| Rule.new(rule, @engine)}
end
rules_for_permission(privilege, context) click to toggle source
# File lib/declarative_authorization/development_support/development_support.rb, line 112
def rules_for_permission (privilege, context)
  rules.select do |rule|
    rule.matches?([@role], [privilege.to_sym], context)
  end
end
source_file() click to toggle source
# File lib/declarative_authorization/development_support/development_support.rb, line 90
def source_file
  @rules.empty? ? nil : @rules.first.source_file
end
source_line() click to toggle source
# File lib/declarative_authorization/development_support/development_support.rb, line 87
def source_line
  @rules.empty? ? nil : @rules.first.source_line
end
to_sym() click to toggle source
# File lib/declarative_authorization/development_support/development_support.rb, line 118
def to_sym
  @role
end