class Authorization::AuthorizationRuleSet

Public Class Methods

new(rules = []) click to toggle source
# File lib/declarative_authorization/authorization.rb, line 389
def initialize(rules = [])
  @rules = rules.clone
  reset!
end

Public Instance Methods

<<(rule) click to toggle source
# File lib/declarative_authorization/authorization.rb, line 411
def <<(rule)
  @rules << rule
  reset!
end
delete(rule) click to toggle source
# File lib/declarative_authorization/authorization.rb, line 406
def delete(rule)
  @rules.delete rule
  reset!
end
each(&block) click to toggle source
# File lib/declarative_authorization/authorization.rb, line 416
def each(&block)
  @rules.each &block
end
initialize_copy(source) click to toggle source
# File lib/declarative_authorization/authorization.rb, line 394
def initialize_copy(source)
  @rules = @rules.collect {|rule| rule.clone}
  reset!
end
matching(roles, privileges, context) click to toggle source
# File lib/declarative_authorization/authorization.rb, line 399
def matching(roles, privileges, context)
  rules = cached_auth_rules[context] || []
  rules.select do |rule|
    rule.matches? roles, privileges, context
  end
end

Private Instance Methods

cached_auth_rules() click to toggle source
# File lib/declarative_authorization/authorization.rb, line 425
def cached_auth_rules
  return @cached_auth_rules if @cached_auth_rules
  @cached_auth_rules = {}
  @rules.each do |rule|
    rule.contexts.each do |context|
      @cached_auth_rules[context] ||= []
      @cached_auth_rules[context] << rule
    end
  end
  @cached_auth_rules
end
reset!() click to toggle source
# File lib/declarative_authorization/authorization.rb, line 421
def reset!
  @cached_auth_rules =nil
end