class SimpleAcl::Acl
Attributes
configuration[R]
Public Class Methods
assert(assertion, current_role, values)
click to toggle source
# File lib/simple_acl/acl.rb, line 29 def self.assert(assertion, current_role, values) return authorized if assertion.class == TrueClass if assertion.class == Proc && assertion.lambda? assertion_result = assertion.call(values) return assert(assertion_result, current_role, values) end unauthorized end
new()
click to toggle source
# File lib/simple_acl/acl.rb, line 8 def initialize @configuration = Configuration.new end
Public Instance Methods
check_acl(current_role, action, values)
click to toggle source
# File lib/simple_acl/acl.rb, line 16 def check_acl(current_role, action, values) return self.class.unauthorized unless configuration && current_role role_privileges = configuration.acl_privileges[current_role.to_sym] return self.class.unauthorized unless role_privileges assertion = role_privileges[action.to_sym] self.class.assert(assertion, current_role, values) end
filter_params(role, params)
click to toggle source
# File lib/simple_acl/acl.rb, line 41 def filter_params(role, params) filters = configuration.acl_filters[role.to_sym] || {} filters.each do |key,value| if params.has_key?(key) params[key] = filter(params[key], value) end end end
get_acl(action)
click to toggle source
# File lib/simple_acl/acl.rb, line 12 def get_acl(action) configuration.acl_privileges.keys.select{|k| configuration.acl_privileges[k][action] } end
Private Instance Methods
filter(values, accepted_values)
click to toggle source
# File lib/simple_acl/acl.rb, line 60 def filter(values, accepted_values) if accepted_values == :all values elsif accepted_values == :none '' elsif values == 'all' accepted_values.join(',') else (values.split(',') & accepted_values).join(',') end end