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
authorized() click to toggle source
# File lib/simple_acl/acl.rb, line 54
def self.authorized
  true
end
new() click to toggle source
# File lib/simple_acl/acl.rb, line 8
def initialize
  @configuration = Configuration.new
end
unauthorized() click to toggle source
# File lib/simple_acl/acl.rb, line 50
def self.unauthorized
  raise ExceptionUnauthorized
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