class Authoreyes::Authorization::AuthorizationRuleSet

Public Class Methods

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

Public Instance Methods

<<(rule) click to toggle source
# File lib/authoreyes/authorization/authorization_rule_set.rb, line 31
def <<(rule)
  @rules << rule
  reset!
end
delete(rule) click to toggle source
# File lib/authoreyes/authorization/authorization_rule_set.rb, line 26
def delete(rule)
  @rules.delete rule
  reset!
end
each(&block) click to toggle source
# File lib/authoreyes/authorization/authorization_rule_set.rb, line 36
def each(&block)
  @rules.each &block
end
initialize_copy(_source) click to toggle source
# File lib/authoreyes/authorization/authorization_rule_set.rb, line 13
def initialize_copy(_source)
  @rules = @rules.collect(&:clone)
  reset!
end
matching(roles, privileges, context) click to toggle source
# File lib/authoreyes/authorization/authorization_rule_set.rb, line 18
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/authoreyes/authorization/authorization_rule_set.rb, line 46
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/authoreyes/authorization/authorization_rule_set.rb, line 42
def reset!
  @cached_auth_rules = nil
end