Module: Toni
- Defined in:
- lib/toni.rb,
lib/toni/role.rb,
lib/toni/builder.rb,
lib/toni/sinatra.rb,
lib/toni/version.rb,
lib/toni/permission.rb,
lib/toni/rspec_helper.rb,
lib/toni/anonymous_user.rb,
lib/toni/permission_matcher.rb
Defined Under Namespace
Modules: RSpecHelper, Sinatra
Classes: AnonymousUser, Builder, InvalidCurrentUserError, MissingMatcherError, NoAuthorizationContextProvidedError, NoMethodForMatcherError, NotAuthorizedError, Permission, PermissionMatcher, Role
Constant Summary
collapse
- AUTH_FILE =
"config/authorization_rules.rb"
- VERSION =
"0.0.2"
Class Method Summary
collapse
Class Method Details
.current_roles ⇒ Object
39
40
41
|
# File 'lib/toni.rb', line 39
def current_roles
roles.select { |role_symbol, r| current_user.role_symbols.include?(role_symbol) }.values
end
|
.current_user ⇒ Object
15
16
17
18
|
# File 'lib/toni.rb', line 15
def current_user
@curent_user ||= nil
@curent_user || anonymous_user
end
|
.current_user=(user) ⇒ Object
20
21
22
23
|
# File 'lib/toni.rb', line 20
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
29
30
31
32
33
34
35
36
37
|
# File 'lib/toni.rb', line 29
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.to_s} with #{current_user.role_symbols.inspect} is not allowed to #{activity} on #{resource_or_name.inspect}")
end
permitted
end
|
.roles ⇒ Object
25
26
27
|
# File 'lib/toni.rb', line 25
def roles
@roles ||= build
end
|
.without_authorization(&block) ⇒ Object
43
44
45
46
47
48
|
# File 'lib/toni.rb', line 43
def without_authorization(&block)
@without_authorization = true
result = block_given? ? yield : nil
@without_authorization = false
result
end
|