Module: Unimatrix::Authorization
- Defined in:
- lib/unimatrix/authorization/parser.rb,
lib/unimatrix/authorization/policy.rb,
lib/unimatrix/authorization/railtie.rb,
lib/unimatrix/authorization/request.rb,
lib/unimatrix/authorization/resource.rb,
lib/unimatrix/authorization/response.rb,
lib/unimatrix/authorization/operation.rb,
lib/unimatrix/authorization/resource_owner.rb,
lib/unimatrix/authorization/resource_server.rb,
lib/unimatrix/authorization/client_credentials_grant.rb,
lib/unimatrix/authorization/filters/requires_policies.rb
Defined Under Namespace
Modules: ClassMethods
Classes: ClientCredentialsGrant, Operation, Parser, Policy, Railtie, Request, RequiresPolicies, Resource, ResourceOwner, ResourceServer, Response
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.included(controller) ⇒ Object
70
71
72
|
# File 'lib/unimatrix/authorization/filters/requires_policies.rb', line 70
def self.included( controller )
controller.extend( ClassMethods )
end
|
Instance Method Details
#policies ⇒ Object
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/unimatrix/authorization/filters/requires_policies.rb', line 78
def policies
@policies ||= begin
retrieve_policies(
@resource_name,
params[ :access_token ],
realm_uuid,
@resource_server
)
end
end
|
#policies=(attributes) ⇒ Object
74
75
76
|
# File 'lib/unimatrix/authorization/filters/requires_policies.rb', line 74
def policies=( attributes )
@policies = attributes
end
|
#request_policies(resource_name, access_token, realm_uuid, resource_server) ⇒ Object
102
103
104
105
106
107
108
109
110
|
# File 'lib/unimatrix/authorization/filters/requires_policies.rb', line 102
def request_policies( resource_name, access_token, realm_uuid, resource_server )
if resource_name && access_token
realm_uuid = realm_uuid || '*'
Operation.new( '/policies' ).where(
access_token: access_token,
resource: "realm/#{ realm_uuid }::#{ resource_server }::#{ resource_name }/*"
).read
end
end
|
#retrieve_policies(resource_name, access_token, realm_uuid, resource_server) ⇒ Object
In Rails app, this is overwritten by #retrieve_policies in railtie.rb
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# File 'lib/unimatrix/authorization/filters/requires_policies.rb', line 91
def retrieve_policies( resource_name, access_token, realm_uuid, resource_server )
if resource_name && access_token
key = params.respond_to?( 'to_unsafe_h' ) ?
params.to_unsafe_h.sort.to_s :
params.sort.to_s
Rails.cache.fetch(
Digest::SHA1.hexdigest( key ),
expires_in: 1.minute
) do
request_policies( resource_name, access_token, realm_uuid, resource_server )
end
end
end
|