Module: Dancan
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/dancan.rb,
lib/dancan/version.rb,
lib/dancan/policy_finder.rb
Defined Under Namespace
Classes: AuthorizationNotPerformedError, NotAuthorizedError, NotDefinedError, PolicyFinder, PolicyScopingNotPerformedError
Constant Summary
collapse
- VERSION =
"0.1.0"
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.policy(user, record) ⇒ Object
21
22
23
24
|
# File 'lib/dancan.rb', line 21
def policy(user, record)
policy = PolicyFinder.new(record).policy
policy.new(user, record) if policy
end
|
.policy!(user, record) ⇒ Object
26
27
28
|
# File 'lib/dancan.rb', line 26
def policy!(user, record)
PolicyFinder.new(record).policy!.new(user, record)
end
|
Instance Method Details
#dancan_admin ⇒ Object
67
68
69
|
# File 'lib/dancan.rb', line 67
def dancan_admin
current_admin
end
|
#policies ⇒ Object
63
64
65
|
# File 'lib/dancan.rb', line 63
def policies
@_dancan_policies ||= {}
end
|
#policy(record) ⇒ Object
59
60
61
|
# File 'lib/dancan.rb', line 59
def policy(record)
policies[record] ||= Dancan.policy!(dancan_admin, record)
end
|
#restrict_access(record, permitted_roles = nil) ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/dancan.rb', line 44
def restrict_access(record, permitted_roles=nil)
roles = permitted_roles
policy = policy(record)
unless roles.map().any? { |role| policy.public_send(role) }
error = NotAuthorizedError.new("#{record} does not have not roles: #{roles.to_s}")
error.roles, error.record, error.policy = roles.to_s, record, policy
raise error
end
true
end
|