Class: KeycloakAdmin::ClientAuthzPermissionClient
- Inherits:
-
Client
- Object
- Client
- KeycloakAdmin::ClientAuthzPermissionClient
show all
- Defined in:
- lib/keycloak-admin/client/client_authz_permission_client.rb
Instance Method Summary
collapse
-
#authz_permission_url(client_id, resource_id = nil, type = nil, id = nil) ⇒ Object
-
#build(name, description, decision_strategy, logic, resources, policies, scopes, resource_type) ⇒ Object
-
#create!(name, description, decision_strategy, logic = "POSITIVE", resources = [], policies = [], scopes = [], resource_type = nil) ⇒ Object
-
#delete(permission_id) ⇒ Object
-
#find_by(name, resource_param, scope = nil) ⇒ Object
-
#get(permission_id) ⇒ Object
-
#initialize(configuration, realm_client, client_id, type, resource_id = nil) ⇒ ClientAuthzPermissionClient
constructor
A new instance of ClientAuthzPermissionClient.
-
#list ⇒ Object
-
#save(permission_representation) ⇒ Object
Methods inherited from Client
#create_payload, #created_id, #current_token, #execute_http, #headers, #server_url
Constructor Details
#initialize(configuration, realm_client, client_id, type, resource_id = nil) ⇒ ClientAuthzPermissionClient
Returns a new instance of ClientAuthzPermissionClient.
4
5
6
7
8
9
10
11
12
13
|
# File 'lib/keycloak-admin/client/client_authz_permission_client.rb', line 4
def initialize(configuration, realm_client, client_id, type, resource_id = nil)
super(configuration)
raise ArgumentError.new("realm must be defined") unless realm_client.name_defined?
raise ArgumentError.new("bad permission type") if !resource_id && !%i[resource scope].include?(type.to_sym)
@realm_client = realm_client
@client_id = client_id
@type = type
@resource_id = resource_id
end
|
Instance Method Details
#authz_permission_url(client_id, resource_id = nil, type = nil, id = nil) ⇒ Object
57
58
59
60
61
62
63
64
65
|
# File 'lib/keycloak-admin/client/client_authz_permission_client.rb', line 57
def authz_permission_url(client_id, resource_id = nil, type = nil, id = nil)
if resource_id
"#{@realm_client.realm_admin_url}/clients/#{encode_segment(client_id)}/authz/resource-server/resource/#{encode_segment(resource_id)}/permissions"
elsif id
"#{@realm_client.realm_admin_url}/clients/#{encode_segment(client_id)}/authz/resource-server/permission/#{encode_segment(type)}/#{encode_segment(id)}"
else
"#{@realm_client.realm_admin_url}/clients/#{encode_segment(client_id)}/authz/resource-server/permission/#{encode_segment(type)}"
end
end
|
#build(name, description, decision_strategy, logic, resources, policies, scopes, resource_type) ⇒ Object
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/keycloak-admin/client/client_authz_permission_client.rb', line 67
def build(name, description, decision_strategy, logic, resources, policies, scopes, resource_type)
policy = ClientAuthzPermissionRepresentation.new
policy.name = name
policy.description = description
policy.type = @type
policy.decision_strategy = decision_strategy
policy.resource_type = resource_type
policy.resources = resources
policy.policies = policies
policy.scopes = scopes
policy.logic = logic
policy
end
|
#create!(name, description, decision_strategy, logic = "POSITIVE", resources = [], policies = [], scopes = [], resource_type = nil) ⇒ Object
30
31
32
33
|
# File 'lib/keycloak-admin/client/client_authz_permission_client.rb', line 30
def create!(name, description, decision_strategy,logic = "POSITIVE", resources = [], policies = [], scopes = [], resource_type = nil)
response = save(build(name, description, decision_strategy, logic, resources, policies, scopes, resource_type))
ClientAuthzPermissionRepresentation.from_hash(JSON.parse(response))
end
|
#delete(permission_id) ⇒ Object
15
16
17
18
19
20
|
# File 'lib/keycloak-admin/client/client_authz_permission_client.rb', line 15
def delete(permission_id)
execute_http do
resource(authz_permission_url(@client_id, nil, @type, permission_id)).delete()
end
true
end
|
#find_by(name, resource_param, scope = nil) ⇒ Object
22
23
24
25
26
27
28
|
# File 'lib/keycloak-admin/client/client_authz_permission_client.rb', line 22
def find_by(name, resource_param, scope = nil)
response = execute_http do
url = "#{authz_permission_url(@client_id)}?#{build_query(name: name, resource: resource_param, type: @type, scope: scope, deep: true, first: 0, max: 100)}"
resource(url).get()
end
JSON.parse(response).map { |role_as_hash| ClientAuthzPermissionRepresentation.from_hash(role_as_hash) }
end
|
#get(permission_id) ⇒ Object
50
51
52
53
54
55
|
# File 'lib/keycloak-admin/client/client_authz_permission_client.rb', line 50
def get(permission_id)
response = execute_http do
resource(authz_permission_url(@client_id, nil, @type, permission_id)).get()
end
ClientAuthzPermissionRepresentation.from_hash(JSON.parse(response))
end
|
#list ⇒ Object
43
44
45
46
47
48
|
# File 'lib/keycloak-admin/client/client_authz_permission_client.rb', line 43
def list
response = execute_http do
resource(authz_permission_url(@client_id, @resource_id)).get()
end
JSON.parse(response).map { |role_as_hash| ClientAuthzPermissionRepresentation.from_hash(role_as_hash) }
end
|
#save(permission_representation) ⇒ Object
35
36
37
38
39
40
41
|
# File 'lib/keycloak-admin/client/client_authz_permission_client.rb', line 35
def save(permission_representation)
execute_http do
resource(authz_permission_url(@client_id, nil, permission_representation.type)).post(
create_payload(permission_representation),
)
end
end
|