Class: Toni
- Inherits:
-
Object
show all
- Defined in:
- lib/toni.rb,
lib/toni/role.rb,
lib/toni/builder.rb,
lib/toni/version.rb,
lib/toni/permission.rb,
lib/toni/anonymous_user.rb,
lib/toni/permission_matcher.rb
Defined Under Namespace
Classes: AnonymousUser, Builder, InvalidCurrentUserError, NoAuthorizationContextProvidedError, NoMethodForMatcherError, NotAuthorizedError, Permission, PermissionMatcher, Role
Constant Summary
collapse
- AUTH_FILE =
File.dirname(__FILE__) + "/authorization_rules.rb"
- VERSION =
"0.0.1"
- @@without_authorization =
false
Class Method Summary
collapse
Class Method Details
.current_roles ⇒ Object
40
41
42
|
# File 'lib/toni.rb', line 40
def current_roles
roles.select { |role_symbol, r| current_user.role_symbols.include?(role_symbol) }.values
end
|
.current_user ⇒ Object
16
17
18
19
|
# File 'lib/toni.rb', line 16
def current_user
@@curent_user ||= nil
@@curent_user || anonymous_user
end
|
.current_user=(user) ⇒ Object
21
22
23
24
|
# File 'lib/toni.rb', line 21
def current_user=(user)
raise InvalidCurrentUserError if !user.nil? && !user.respond_to?(:role_symbols)
@@curent_user = user
end
|
.permitted_to?(activity, resource_or_name, options = {}) ⇒ Boolean
30
31
32
33
34
35
36
37
38
|
# File 'lib/toni.rb', line 30
def permitted_to?(activity, resource_or_name, options={})
return true if @@without_authorization
permitted = current_roles.any?{ |r| r.permitted_to?(activity, resource_or_name, options) }
if options[:bang] && !permitted
raise NotAuthorizedError.new("#{current_user.inspect} is not allowed to #{activity} on #{resource_or_name.inspect}")
end
permitted
end
|
.roles ⇒ Object
26
27
28
|
# File 'lib/toni.rb', line 26
def roles
@@roles ||= build
end
|
.without_authorization(&block) ⇒ Object
44
45
46
47
48
|
# File 'lib/toni.rb', line 44
def without_authorization(&block)
@@without_authorization = true
yield if block_given?
@@without_authorization = false
end
|