class SimpleAcl::Configuration

Attributes

acl_filters[R]
acl_privileges[R]

Public Class Methods

new() click to toggle source
# File lib/simple_acl/configuration.rb, line 7
def initialize
  @acl_privileges = {}
  @acl_filters = {}
end

Public Instance Methods

add_role(role, privileges) click to toggle source
# File lib/simple_acl/configuration.rb, line 12
def add_role(role, privileges)
  check_keys(privileges)

  @acl_privileges[role] = (@acl_privileges[privileges[:inherit]] || {}).merge(privileges[:privileges] || {})
  acl_filters[role] = (acl_filters[privileges[:inherit]] || {}).merge(privileges[:filters] || {})

  check_set_up(@acl_privileges[role])

  deep_freeze!(@acl_privileges[role])
end

Private Instance Methods

check_assertion(assertion) click to toggle source
# File lib/simple_acl/configuration.rb, line 38
def check_assertion(assertion)
  return if assertion.class == Proc && assertion.lambda?
  raise ExceptionConfiguration, "Not usable assertion type : #{assertion.class}" unless [TrueClass, FalseClass].include?(assertion.class)
end
check_keys(privileges) click to toggle source

check defined keys in privileges

# File lib/simple_acl/configuration.rb, line 26
def check_keys(privileges)
  privileges.keys.each do |configuration_key|
    raise ExceptionConfiguration, "Unknow configuration key #{configuration_key}" unless [:privileges, :inherit, :filters].include?(configuration_key)
  end
  raise ExceptionConfiguration, 'Inherit specified is not defined previously' if privileges[:inherit] && !@acl_privileges[privileges[:inherit]]
end
check_set_up(privileges) click to toggle source

check of the set up

# File lib/simple_acl/configuration.rb, line 34
def check_set_up(privileges)
  privileges.keys.each{|action| check_assertion(privileges[action]) }
end
deep_freeze!(option) click to toggle source

do a recursive freeze on Array and Hash

# File lib/simple_acl/configuration.rb, line 44
def deep_freeze!(option)
  option.freeze

  case option.class
    when Hash
      option.each{|k, v| deep_freeze(option[k]) }
    when Array
      option.each{|v| deep_freeze(v) }
    else
  end
end