class Authorization::AuthorizationRuleSet

Public Class Methods

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

Public Instance Methods

<<(rule) click to toggle source
# File lib/declarative_authorization/authorization.rb, line 390
def << rule
  @rules << rule
  reset!
end
delete(rule) click to toggle source
# File lib/declarative_authorization/authorization.rb, line 386
def delete rule
  @rules.delete rule
  reset!
end
each(&block) click to toggle source
# File lib/declarative_authorization/authorization.rb, line 394
def each &block
  @rules.each &block
end
initialize_copy(source) click to toggle source
# File lib/declarative_authorization/authorization.rb, line 374
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 379
def matching(roles, privileges, context)
  roles = [roles] unless roles.is_a?(Array)
  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 402
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 399
def reset!
  @cached_auth_rules =nil
end