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