keycloak-admin 1.1.3 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/Dockerfile +24 -24
  3. data/.github/workflows/ci.yml +80 -83
  4. data/.gitignore +9 -9
  5. data/.rspec +2 -2
  6. data/CHANGELOG.md +194 -188
  7. data/Dockerfile +12 -12
  8. data/Gemfile +3 -3
  9. data/Gemfile.lock +51 -49
  10. data/MIT-LICENSE +20 -20
  11. data/README.md +748 -748
  12. data/bin/console +9 -9
  13. data/keycloak-admin.gemspec +24 -24
  14. data/lib/keycloak-admin/client/attack_detection_client.rb +41 -41
  15. data/lib/keycloak-admin/client/client.rb +56 -56
  16. data/lib/keycloak-admin/client/client_authz_permission_client.rb +80 -80
  17. data/lib/keycloak-admin/client/client_authz_policy_client.rb +75 -75
  18. data/lib/keycloak-admin/client/client_authz_resource_client.rb +92 -92
  19. data/lib/keycloak-admin/client/client_authz_scope_client.rb +70 -70
  20. data/lib/keycloak-admin/client/client_client.rb +71 -71
  21. data/lib/keycloak-admin/client/client_role_client.rb +20 -20
  22. data/lib/keycloak-admin/client/client_role_mappings_client.rb +32 -32
  23. data/lib/keycloak-admin/client/configurable_token_client.rb +35 -35
  24. data/lib/keycloak-admin/client/group_client.rb +148 -131
  25. data/lib/keycloak-admin/client/identity_provider_client.rb +51 -51
  26. data/lib/keycloak-admin/client/realm_client.rb +122 -122
  27. data/lib/keycloak-admin/client/role_client.rb +59 -59
  28. data/lib/keycloak-admin/client/role_mapper_client.rb +47 -45
  29. data/lib/keycloak-admin/client/token_client.rb +29 -29
  30. data/lib/keycloak-admin/client/user_client.rb +266 -266
  31. data/lib/keycloak-admin/configuration.rb +52 -52
  32. data/lib/keycloak-admin/representation/attack_detection_representation.rb +17 -17
  33. data/lib/keycloak-admin/representation/camel_json.rb +12 -12
  34. data/lib/keycloak-admin/representation/client_authz_permission_representation.rb +33 -33
  35. data/lib/keycloak-admin/representation/client_authz_policy_config_representation.rb +14 -14
  36. data/lib/keycloak-admin/representation/client_authz_policy_representation.rb +26 -26
  37. data/lib/keycloak-admin/representation/client_authz_resource_representation.rb +25 -25
  38. data/lib/keycloak-admin/representation/client_authz_scope_representation.rb +16 -16
  39. data/lib/keycloak-admin/representation/client_representation.rb +71 -71
  40. data/lib/keycloak-admin/representation/credential_representation.rb +38 -38
  41. data/lib/keycloak-admin/representation/federated_identity_representation.rb +15 -15
  42. data/lib/keycloak-admin/representation/group_representation.rb +21 -21
  43. data/lib/keycloak-admin/representation/identity_provider_mapper_representation.rb +19 -19
  44. data/lib/keycloak-admin/representation/identity_provider_representation.rb +67 -67
  45. data/lib/keycloak-admin/representation/impersonation_redirection_representation.rb +16 -16
  46. data/lib/keycloak-admin/representation/impersonation_representation.rb +43 -43
  47. data/lib/keycloak-admin/representation/protocol_mapper_representation.rb +19 -19
  48. data/lib/keycloak-admin/representation/realm_representation.rb +14 -14
  49. data/lib/keycloak-admin/representation/representation.rb +23 -23
  50. data/lib/keycloak-admin/representation/role_representation.rb +19 -19
  51. data/lib/keycloak-admin/representation/session_representation.rb +22 -22
  52. data/lib/keycloak-admin/representation/token_representation.rb +39 -39
  53. data/lib/keycloak-admin/representation/user_representation.rb +47 -47
  54. data/lib/keycloak-admin/resource/base_role_containing_resource.rb +28 -28
  55. data/lib/keycloak-admin/resource/group_resource.rb +11 -11
  56. data/lib/keycloak-admin/resource/user_resource.rb +7 -7
  57. data/lib/keycloak-admin/version.rb +3 -3
  58. data/lib/keycloak-admin.rb +84 -84
  59. data/spec/client/attack_detection_client_spec.rb +102 -102
  60. data/spec/client/client_authz_permission_client_spec.rb +170 -170
  61. data/spec/client/client_authz_policy_client_spec.rb +169 -169
  62. data/spec/client/client_authz_resource_client_spec.rb +150 -150
  63. data/spec/client/client_authz_scope_client_spec.rb +133 -133
  64. data/spec/client/client_client_spec.rb +133 -133
  65. data/spec/client/client_role_mappings_client_spec.rb +82 -82
  66. data/spec/client/client_spec.rb +28 -28
  67. data/spec/client/configurable_token_client_spec.rb +34 -34
  68. data/spec/client/group_client_spec.rb +328 -258
  69. data/spec/client/identity_provider_client_spec.rb +92 -92
  70. data/spec/client/realm_client_spec.rb +155 -155
  71. data/spec/client/role_client_spec.rb +79 -79
  72. data/spec/client/role_mapper_client_spec.rb +113 -68
  73. data/spec/client/token_client_spec.rb +68 -68
  74. data/spec/client/user_client_spec.rb +373 -373
  75. data/spec/configuration_spec.rb +113 -113
  76. data/spec/integration/client_authorization_spec.rb +93 -95
  77. data/spec/representation/attack_detection_representation_spec.rb +15 -15
  78. data/spec/representation/client_authz_permission_representation_spec.rb +52 -52
  79. data/spec/representation/client_authz_policy_representation_spec.rb +46 -46
  80. data/spec/representation/client_authz_resource_representation_spec.rb +33 -33
  81. data/spec/representation/client_authz_scope_representation_spec.rb +18 -18
  82. data/spec/representation/client_representation_spec.rb +119 -119
  83. data/spec/representation/group_representation_spec.rb +22 -22
  84. data/spec/representation/identity_provider_mapper_representation_spec.rb +24 -24
  85. data/spec/representation/identity_provider_representation_spec.rb +113 -113
  86. data/spec/representation/impersonation_representation_spec.rb +163 -163
  87. data/spec/representation/protocol_mapper_representation_spec.rb +57 -57
  88. data/spec/representation/role_representation_spec.rb +37 -37
  89. data/spec/representation/session_representation_spec.rb +15 -15
  90. data/spec/representation/user_representation_spec.rb +15 -15
  91. data/spec/resource/group_resource_spec.rb +14 -14
  92. data/spec/resource/user_resource_spec.rb +14 -14
  93. data/spec/spec_helper.rb +37 -37
  94. metadata +10 -10
@@ -1,131 +1,148 @@
1
- module KeycloakAdmin
2
- class GroupClient < Client
3
- def initialize(configuration, realm_client)
4
- super(configuration)
5
- raise ArgumentError.new("realm must be defined") unless realm_client.name_defined?
6
- @realm_client = realm_client
7
- end
8
-
9
- def get(group_id)
10
- response = execute_http do
11
- RestClient::Resource.new(groups_url(group_id), @configuration.rest_client_options).get(headers)
12
- end
13
- GroupRepresentation.from_hash(JSON.parse(response))
14
- end
15
-
16
- def children(parent_id)
17
- response = execute_http do
18
- url = "#{groups_url(parent_id)}/children"
19
- RestClient::Resource.new(url, @configuration.rest_client_options).get(headers)
20
- end
21
- JSON.parse(response).map { |group_as_hash| GroupRepresentation.from_hash(group_as_hash) }
22
- end
23
-
24
- def list
25
- search(nil)
26
- end
27
-
28
- def search(query)
29
- derived_headers = case query
30
- when String
31
- headers.merge({params: { search: query }})
32
- when Hash
33
- headers.merge({params: query })
34
- else
35
- headers
36
- end
37
- response = execute_http do
38
- RestClient::Resource.new(groups_url, @configuration.rest_client_options).get(derived_headers)
39
- end
40
- JSON.parse(response).map { |group_as_hash| GroupRepresentation.from_hash(group_as_hash) }
41
- end
42
-
43
- def create!(name, path = nil, attributes = {})
44
- response = save(build(name, path, attributes))
45
- created_id(response)
46
- end
47
-
48
- def save(group_representation)
49
- execute_http do
50
- payload = create_payload(group_representation)
51
- if group_representation.id
52
- RestClient::Resource.new(groups_url(group_representation.id), @configuration.rest_client_options).put(payload, headers)
53
- else
54
- RestClient::Resource.new(groups_url, @configuration.rest_client_options).post(payload, headers)
55
- end
56
- end
57
- end
58
-
59
- def create_subgroup!(parent_id, name, attributes = {})
60
- url = "#{groups_url(parent_id)}/children"
61
- response = execute_http do
62
- RestClient::Resource.new(url, @configuration.rest_client_options).post(
63
- create_payload(build(name, nil, attributes)), headers
64
- )
65
- end
66
- created_id(response)
67
- end
68
-
69
- def delete(group_id)
70
- execute_http do
71
- RestClient::Resource.new(groups_url(group_id), @configuration.rest_client_options).delete(headers)
72
- end
73
- true
74
- end
75
-
76
- def members(group_id, first=0, max=100)
77
- url = "#{groups_url(group_id)}/members"
78
- query = {first: first.try(:to_i), max: max.try(:to_i)}.compact
79
- unless query.empty?
80
- query_string = query.to_a.map { |e| "#{e[0]}=#{e[1]}" }.join("&")
81
- url = "#{url}?#{query_string}"
82
- end
83
- response = execute_http do
84
- RestClient::Resource.new(url, @configuration.rest_client_options).get(headers)
85
- end
86
- JSON.parse(response).map { |user_as_hash| UserRepresentation.from_hash(user_as_hash) }
87
- end
88
-
89
- # Gets all realm-level roles for a group
90
- def get_realm_level_roles(group_id)
91
- url = "#{groups_url(group_id)}/role-mappings/realm"
92
- response = execute_http do
93
- RestClient::Resource.new(url, @configuration.rest_client_options).get(headers)
94
- end
95
- JSON.parse(response).map { |role_as_hash| RoleRepresentation.from_hash(role_as_hash) }
96
- end
97
-
98
- # Adds a realm-level role to a group via the role name
99
- def add_realm_level_role_name!(group_id, role_name)
100
- # creates a full role-representation object needed by the keycloak api to work
101
- role_representation = RoleClient.new(@configuration, @realm_client).get(role_name)
102
- url = "#{groups_url(group_id)}/role-mappings/realm"
103
- response = execute_http do
104
- RestClient::Resource.new(url, @configuration.rest_client_options).post(
105
- create_payload([role_representation]), headers
106
- )
107
- end
108
- role_representation
109
- end
110
-
111
- def groups_url(id=nil)
112
- if id
113
- "#{@realm_client.realm_admin_url}/groups/#{id}"
114
- else
115
- "#{@realm_client.realm_admin_url}/groups"
116
- end
117
- end
118
-
119
- private
120
-
121
- def build(name, path, attributes)
122
- GroupRepresentation.from_hash(
123
- {
124
- "name" => name,
125
- "path" => path,
126
- "attributes" => attributes
127
- }
128
- )
129
- end
130
- end
131
- end
1
+ module KeycloakAdmin
2
+ class GroupClient < Client
3
+ def initialize(configuration, realm_client)
4
+ super(configuration)
5
+ raise ArgumentError.new("realm must be defined") unless realm_client.name_defined?
6
+ @realm_client = realm_client
7
+ end
8
+
9
+ def get(group_id)
10
+ response = execute_http do
11
+ RestClient::Resource.new(groups_url(group_id), @configuration.rest_client_options).get(headers)
12
+ end
13
+ GroupRepresentation.from_hash(JSON.parse(response))
14
+ end
15
+
16
+ def children(parent_id)
17
+ response = execute_http do
18
+ url = "#{groups_url(parent_id)}/children"
19
+ RestClient::Resource.new(url, @configuration.rest_client_options).get(headers)
20
+ end
21
+ JSON.parse(response).map { |group_as_hash| GroupRepresentation.from_hash(group_as_hash) }
22
+ end
23
+
24
+ def list
25
+ search(nil)
26
+ end
27
+
28
+ def search(query)
29
+ derived_headers = case query
30
+ when String
31
+ headers.merge({params: { search: query }})
32
+ when Hash
33
+ headers.merge({params: query })
34
+ else
35
+ headers
36
+ end
37
+ response = execute_http do
38
+ RestClient::Resource.new(groups_url, @configuration.rest_client_options).get(derived_headers)
39
+ end
40
+ JSON.parse(response).map { |group_as_hash| GroupRepresentation.from_hash(group_as_hash) }
41
+ end
42
+
43
+ def create!(name, path = nil, attributes = {})
44
+ response = save(build(name, path, attributes))
45
+ created_id(response)
46
+ end
47
+
48
+ def save(group_representation)
49
+ execute_http do
50
+ payload = create_payload(group_representation)
51
+ if group_representation.id
52
+ RestClient::Resource.new(groups_url(group_representation.id), @configuration.rest_client_options).put(payload, headers)
53
+ else
54
+ RestClient::Resource.new(groups_url, @configuration.rest_client_options).post(payload, headers)
55
+ end
56
+ end
57
+ end
58
+
59
+ def create_subgroup!(parent_id, name, attributes = {})
60
+ url = "#{groups_url(parent_id)}/children"
61
+ response = execute_http do
62
+ RestClient::Resource.new(url, @configuration.rest_client_options).post(
63
+ create_payload(build(name, nil, attributes)), headers
64
+ )
65
+ end
66
+ created_id(response)
67
+ end
68
+
69
+ def delete(group_id)
70
+ execute_http do
71
+ RestClient::Resource.new(groups_url(group_id), @configuration.rest_client_options).delete(headers)
72
+ end
73
+ true
74
+ end
75
+
76
+ def members(group_id, first=0, max=100)
77
+ url = "#{groups_url(group_id)}/members"
78
+ query = {first: first.try(:to_i), max: max.try(:to_i)}.compact
79
+ unless query.empty?
80
+ query_string = query.to_a.map { |e| "#{e[0]}=#{e[1]}" }.join("&")
81
+ url = "#{url}?#{query_string}"
82
+ end
83
+ response = execute_http do
84
+ RestClient::Resource.new(url, @configuration.rest_client_options).get(headers)
85
+ end
86
+ JSON.parse(response).map { |user_as_hash| UserRepresentation.from_hash(user_as_hash) }
87
+ end
88
+
89
+ # Gets all realm-level roles for a group
90
+ def get_realm_level_roles(group_id)
91
+ url = "#{groups_url(group_id)}/role-mappings/realm"
92
+ response = execute_http do
93
+ RestClient::Resource.new(url, @configuration.rest_client_options).get(headers)
94
+ end
95
+ JSON.parse(response).map { |role_as_hash| RoleRepresentation.from_hash(role_as_hash) }
96
+ end
97
+
98
+ # Adds a realm-level role to a group via the role name
99
+ def add_realm_level_role_name!(group_id, role_name)
100
+ # creates a full role-representation object needed by the keycloak api to work
101
+ role_representation = RoleClient.new(@configuration, @realm_client).get(role_name)
102
+ url = "#{groups_url(group_id)}/role-mappings/realm"
103
+ response = execute_http do
104
+ RestClient::Resource.new(url, @configuration.rest_client_options).post(
105
+ create_payload([role_representation]), headers
106
+ )
107
+ end
108
+ role_representation
109
+ end
110
+
111
+ # Remove a realm-level role from a group by the role name
112
+ def remove_realm_level_role_name!(group_id, role_name)
113
+ role_representation = RoleClient.new(@configuration, @realm_client).get(role_name)
114
+ url = "#{groups_url(group_id)}/role-mappings/realm"
115
+ execute_http do
116
+ RestClient::Request.execute(
117
+ @configuration.rest_client_options.merge(
118
+ url:,
119
+ method: :delete,
120
+ payload: create_payload([role_representation]),
121
+ headers: headers
122
+ )
123
+ )
124
+ end
125
+ true
126
+ end
127
+
128
+ def groups_url(id=nil)
129
+ if id
130
+ "#{@realm_client.realm_admin_url}/groups/#{id}"
131
+ else
132
+ "#{@realm_client.realm_admin_url}/groups"
133
+ end
134
+ end
135
+
136
+ private
137
+
138
+ def build(name, path, attributes)
139
+ GroupRepresentation.from_hash(
140
+ {
141
+ "name" => name,
142
+ "path" => path,
143
+ "attributes" => attributes
144
+ }
145
+ )
146
+ end
147
+ end
148
+ end
@@ -1,51 +1,51 @@
1
- module KeycloakAdmin
2
- class IdentityProviderClient < Client
3
- def initialize(configuration, realm_client)
4
- super(configuration)
5
- raise ArgumentError.new("realm must be defined") unless realm_client.name_defined?
6
- @realm_client = realm_client
7
- end
8
-
9
- def create(identity_provider_representation)
10
- execute_http do
11
- RestClient::Resource.new(identity_providers_url, @configuration.rest_client_options).post(
12
- create_payload(identity_provider_representation), headers
13
- )
14
- end
15
- end
16
-
17
- def add_mapping(identity_provider_alias, identity_provider_mapping_representation)
18
- execute_http do
19
- RestClient::Resource.new(identity_provider_mappers_url(identity_provider_alias), @configuration.rest_client_options).post(
20
- create_payload(identity_provider_mapping_representation), headers
21
- )
22
- end
23
- end
24
-
25
- def list
26
- response = execute_http do
27
- RestClient::Resource.new(identity_providers_url, @configuration.rest_client_options).get(headers)
28
- end
29
- JSON.parse(response).map { |provider_as_hash| IdentityProviderRepresentation.from_hash(provider_as_hash) }
30
- end
31
-
32
- def get(internal_id_or_alias=nil)
33
- response = execute_http do
34
- RestClient::Resource.new(identity_providers_url(internal_id_or_alias), @configuration.rest_client_options).get(headers)
35
- end
36
- IdentityProviderRepresentation.from_hash(JSON.parse(response))
37
- end
38
-
39
- def identity_providers_url(internal_id_or_alias=nil)
40
- if internal_id_or_alias
41
- "#{@realm_client.realm_admin_url}/identity-provider/instances/#{internal_id_or_alias}"
42
- else
43
- "#{@realm_client.realm_admin_url}/identity-provider/instances"
44
- end
45
- end
46
-
47
- def identity_provider_mappers_url(internal_id_or_alias)
48
- "#{identity_providers_url(internal_id_or_alias)}/mappers"
49
- end
50
- end
51
- end
1
+ module KeycloakAdmin
2
+ class IdentityProviderClient < Client
3
+ def initialize(configuration, realm_client)
4
+ super(configuration)
5
+ raise ArgumentError.new("realm must be defined") unless realm_client.name_defined?
6
+ @realm_client = realm_client
7
+ end
8
+
9
+ def create(identity_provider_representation)
10
+ execute_http do
11
+ RestClient::Resource.new(identity_providers_url, @configuration.rest_client_options).post(
12
+ create_payload(identity_provider_representation), headers
13
+ )
14
+ end
15
+ end
16
+
17
+ def add_mapping(identity_provider_alias, identity_provider_mapping_representation)
18
+ execute_http do
19
+ RestClient::Resource.new(identity_provider_mappers_url(identity_provider_alias), @configuration.rest_client_options).post(
20
+ create_payload(identity_provider_mapping_representation), headers
21
+ )
22
+ end
23
+ end
24
+
25
+ def list
26
+ response = execute_http do
27
+ RestClient::Resource.new(identity_providers_url, @configuration.rest_client_options).get(headers)
28
+ end
29
+ JSON.parse(response).map { |provider_as_hash| IdentityProviderRepresentation.from_hash(provider_as_hash) }
30
+ end
31
+
32
+ def get(internal_id_or_alias=nil)
33
+ response = execute_http do
34
+ RestClient::Resource.new(identity_providers_url(internal_id_or_alias), @configuration.rest_client_options).get(headers)
35
+ end
36
+ IdentityProviderRepresentation.from_hash(JSON.parse(response))
37
+ end
38
+
39
+ def identity_providers_url(internal_id_or_alias=nil)
40
+ if internal_id_or_alias
41
+ "#{@realm_client.realm_admin_url}/identity-provider/instances/#{internal_id_or_alias}"
42
+ else
43
+ "#{@realm_client.realm_admin_url}/identity-provider/instances"
44
+ end
45
+ end
46
+
47
+ def identity_provider_mappers_url(internal_id_or_alias)
48
+ "#{identity_providers_url(internal_id_or_alias)}/mappers"
49
+ end
50
+ end
51
+ end
@@ -1,122 +1,122 @@
1
- module KeycloakAdmin
2
- class RealmClient < Client
3
- def initialize(configuration, realm_name=nil)
4
- super(configuration)
5
- @realm_name = realm_name
6
- end
7
-
8
- def list
9
- response = execute_http do
10
- RestClient::Resource.new(realm_list_url, @configuration.rest_client_options).get(headers)
11
- end
12
- JSON.parse(response).map { |realm_as_hash| RealmRepresentation.from_hash(realm_as_hash) }
13
- end
14
-
15
- def delete
16
- execute_http do
17
- RestClient::Resource.new(realm_admin_url, @configuration.rest_client_options).delete(headers)
18
- end
19
- true
20
- end
21
-
22
- def save(realm_representation)
23
- execute_http do
24
- RestClient::Resource.new(realm_list_url, @configuration.rest_client_options).post(
25
- create_payload(realm_representation), headers
26
- )
27
- end
28
- end
29
-
30
- def update(realm_representation_body)
31
- execute_http do
32
- RestClient::Resource.new(realm_admin_url, @configuration.rest_client_options).put(
33
- create_payload(realm_representation_body), headers
34
- )
35
- end
36
- end
37
-
38
- def realm_url
39
- if @realm_name
40
- "#{server_url}/realms/#{@realm_name}"
41
- else
42
- "#{server_url}/realms"
43
- end
44
- end
45
-
46
- def realm_admin_url
47
- if @realm_name
48
- "#{server_url}/admin/realms/#{@realm_name}"
49
- else
50
- "#{server_url}/admin/realms"
51
- end
52
- end
53
-
54
- def realm_list_url
55
- "#{server_url}/admin/realms"
56
- end
57
-
58
- def token
59
- TokenClient.new(@configuration, self)
60
- end
61
-
62
- def configurable_token
63
- ConfigurableTokenClient.new(@configuration, self)
64
- end
65
-
66
- def clients
67
- ClientClient.new(@configuration, self)
68
- end
69
-
70
- def groups
71
- GroupClient.new(@configuration, self)
72
- end
73
-
74
- def group(group_id)
75
- GroupResource.new(@configuration, self, group_id)
76
- end
77
-
78
- def roles
79
- RoleClient.new(@configuration, self)
80
- end
81
-
82
- def client_roles
83
- ClientRoleClient.new(@configuration, self)
84
- end
85
-
86
- def users
87
- UserClient.new(@configuration, self)
88
- end
89
-
90
- def attack_detections
91
- AttackDetectionClient.new(@configuration, self)
92
- end
93
-
94
- def identity_providers
95
- IdentityProviderClient.new(@configuration, self)
96
- end
97
-
98
- def user(user_id)
99
- UserResource.new(@configuration, self, user_id)
100
- end
101
-
102
- def authz_scopes(client_id, resource_id = nil)
103
- ClientAuthzScopeClient.new(@configuration, self, client_id, resource_id)
104
- end
105
-
106
- def authz_resources(client_id)
107
- ClientAuthzResourceClient.new(@configuration, self, client_id)
108
- end
109
-
110
- def authz_permissions(client_id, type, resource_id = nil)
111
- ClientAuthzPermissionClient.new(@configuration, self, client_id, type, resource_id)
112
- end
113
-
114
- def authz_policies(client_id, type)
115
- ClientAuthzPolicyClient.new(@configuration, self, client_id, type)
116
- end
117
-
118
- def name_defined?
119
- !@realm_name.nil?
120
- end
121
- end
122
- end
1
+ module KeycloakAdmin
2
+ class RealmClient < Client
3
+ def initialize(configuration, realm_name=nil)
4
+ super(configuration)
5
+ @realm_name = realm_name
6
+ end
7
+
8
+ def list
9
+ response = execute_http do
10
+ RestClient::Resource.new(realm_list_url, @configuration.rest_client_options).get(headers)
11
+ end
12
+ JSON.parse(response).map { |realm_as_hash| RealmRepresentation.from_hash(realm_as_hash) }
13
+ end
14
+
15
+ def delete
16
+ execute_http do
17
+ RestClient::Resource.new(realm_admin_url, @configuration.rest_client_options).delete(headers)
18
+ end
19
+ true
20
+ end
21
+
22
+ def save(realm_representation)
23
+ execute_http do
24
+ RestClient::Resource.new(realm_list_url, @configuration.rest_client_options).post(
25
+ create_payload(realm_representation), headers
26
+ )
27
+ end
28
+ end
29
+
30
+ def update(realm_representation_body)
31
+ execute_http do
32
+ RestClient::Resource.new(realm_admin_url, @configuration.rest_client_options).put(
33
+ create_payload(realm_representation_body), headers
34
+ )
35
+ end
36
+ end
37
+
38
+ def realm_url
39
+ if @realm_name
40
+ "#{server_url}/realms/#{@realm_name}"
41
+ else
42
+ "#{server_url}/realms"
43
+ end
44
+ end
45
+
46
+ def realm_admin_url
47
+ if @realm_name
48
+ "#{server_url}/admin/realms/#{@realm_name}"
49
+ else
50
+ "#{server_url}/admin/realms"
51
+ end
52
+ end
53
+
54
+ def realm_list_url
55
+ "#{server_url}/admin/realms"
56
+ end
57
+
58
+ def token
59
+ TokenClient.new(@configuration, self)
60
+ end
61
+
62
+ def configurable_token
63
+ ConfigurableTokenClient.new(@configuration, self)
64
+ end
65
+
66
+ def clients
67
+ ClientClient.new(@configuration, self)
68
+ end
69
+
70
+ def groups
71
+ GroupClient.new(@configuration, self)
72
+ end
73
+
74
+ def group(group_id)
75
+ GroupResource.new(@configuration, self, group_id)
76
+ end
77
+
78
+ def roles
79
+ RoleClient.new(@configuration, self)
80
+ end
81
+
82
+ def client_roles
83
+ ClientRoleClient.new(@configuration, self)
84
+ end
85
+
86
+ def users
87
+ UserClient.new(@configuration, self)
88
+ end
89
+
90
+ def attack_detections
91
+ AttackDetectionClient.new(@configuration, self)
92
+ end
93
+
94
+ def identity_providers
95
+ IdentityProviderClient.new(@configuration, self)
96
+ end
97
+
98
+ def user(user_id)
99
+ UserResource.new(@configuration, self, user_id)
100
+ end
101
+
102
+ def authz_scopes(client_id, resource_id = nil)
103
+ ClientAuthzScopeClient.new(@configuration, self, client_id, resource_id)
104
+ end
105
+
106
+ def authz_resources(client_id)
107
+ ClientAuthzResourceClient.new(@configuration, self, client_id)
108
+ end
109
+
110
+ def authz_permissions(client_id, type, resource_id = nil)
111
+ ClientAuthzPermissionClient.new(@configuration, self, client_id, type, resource_id)
112
+ end
113
+
114
+ def authz_policies(client_id, type)
115
+ ClientAuthzPolicyClient.new(@configuration, self, client_id, type)
116
+ end
117
+
118
+ def name_defined?
119
+ !@realm_name.nil?
120
+ end
121
+ end
122
+ end