keycloak-admin 1.0.7 → 1.0.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/lib/keycloak-admin/client/client_role_client.rb +20 -0
- data/lib/keycloak-admin/client/realm_client.rb +4 -0
- data/lib/keycloak-admin/client/user_client.rb +16 -4
- data/lib/keycloak-admin/representation/protocol_mapper_representation.rb +2 -2
- data/lib/keycloak-admin/version.rb +1 -1
- data/lib/keycloak-admin.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ccf7a2ad66682e3a4ed21b48fb816b8b3b179fc20b22d77ee5e6081381b360d
|
4
|
+
data.tar.gz: 497ca95848d65d72164b121210b122c1a068fce5c8123614b2801ff878ee9395
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7c9feea764166e7880cc964a03901e4cd4fa271ee97a3cb84cd23f7f87be650ffd7002bb82dd78fe2a34611083542445440e368216ee2ec3df22dc0a9457fa8
|
7
|
+
data.tar.gz: 63baea81ba99dfb815aa6e6dc41256fb1d21c385f59db22f1128a8916356bd5b850f42a4874438c7a2a806edcb8c2b287f76c8db0030d22f9e689b3b8cf3a4cc
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
7
|
|
8
|
+
## [1.0.13] - 2022-03-13
|
9
|
+
|
10
|
+
* Add client role on users
|
11
|
+
* List client roles
|
8
12
|
|
9
13
|
## [1.0.7] - 2022-03-13
|
10
14
|
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
module KeycloakAdmin
|
2
|
+
class ClientRoleClient < 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 list(client_id)
|
10
|
+
response = execute_http do
|
11
|
+
RestClient::Resource.new(clients_url(client_id), @configuration.rest_client_options).get(headers)
|
12
|
+
end
|
13
|
+
JSON.parse(response).map { |role_as_hash| RoleRepresentation.from_hash(role_as_hash) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def clients_url(id)
|
17
|
+
"#{@realm_client.realm_admin_url}/clients/#{id}/roles"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -6,8 +6,8 @@ module KeycloakAdmin
|
|
6
6
|
@realm_client = realm_client
|
7
7
|
end
|
8
8
|
|
9
|
-
def create!(username, email, password, email_verified, locale)
|
10
|
-
user = save(build(username, email, password, email_verified, locale))
|
9
|
+
def create!(username, email, password, email_verified, locale, attributes={})
|
10
|
+
user = save(build(username, email, password, email_verified, locale, attributes))
|
11
11
|
search(user.email)&.first
|
12
12
|
end
|
13
13
|
|
@@ -52,6 +52,14 @@ module KeycloakAdmin
|
|
52
52
|
)
|
53
53
|
end
|
54
54
|
|
55
|
+
def add_client_roles_on_user(user_id, client_id, role_representations)
|
56
|
+
execute_http do
|
57
|
+
RestClient::Resource.new(user_client_role_mappings_url(user_id, client_id), @configuration.rest_client_options).post(
|
58
|
+
create_payload(role_representations), headers
|
59
|
+
)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
55
63
|
def get(user_id)
|
56
64
|
response = execute_http do
|
57
65
|
RestClient::Resource.new(users_url(user_id), @configuration.rest_client_options).get(headers)
|
@@ -176,6 +184,10 @@ module KeycloakAdmin
|
|
176
184
|
end
|
177
185
|
end
|
178
186
|
|
187
|
+
def user_client_role_mappings_url(user_id, client_id)
|
188
|
+
"#{users_url(user_id)}/role-mappings/clients/#{client_id}"
|
189
|
+
end
|
190
|
+
|
179
191
|
def reset_password_url(user_id)
|
180
192
|
raise ArgumentError.new("user_id must be defined") if user_id.nil?
|
181
193
|
"#{users_url(user_id)}/reset-password"
|
@@ -204,13 +216,13 @@ module KeycloakAdmin
|
|
204
216
|
|
205
217
|
private
|
206
218
|
|
207
|
-
def build(username, email, password, email_verified, locale)
|
219
|
+
def build(username, email, password, email_verified, locale, attributes={})
|
208
220
|
user = UserRepresentation.new
|
209
221
|
user.email = email
|
210
222
|
user.username = username
|
211
223
|
user.email_verified = email_verified
|
212
224
|
user.enabled = true
|
213
|
-
user.attributes = {}
|
225
|
+
user.attributes = attributes || {}
|
214
226
|
user.attributes[:locale] = locale if locale
|
215
227
|
user.add_credential(CredentialRepresentation.from_password(password))
|
216
228
|
user
|
@@ -4,7 +4,7 @@ module KeycloakAdmin
|
|
4
4
|
:id,
|
5
5
|
:name,
|
6
6
|
:protocol,
|
7
|
-
:
|
7
|
+
:protocolMapper
|
8
8
|
|
9
9
|
def self.from_hash(hash)
|
10
10
|
rep = new
|
@@ -12,7 +12,7 @@ module KeycloakAdmin
|
|
12
12
|
rep.config = hash["config"]
|
13
13
|
rep.name = hash["name"]
|
14
14
|
rep.protocol = hash["protocol"]
|
15
|
-
rep.
|
15
|
+
rep.protocolMapper = hash["protocolMapper"]
|
16
16
|
rep
|
17
17
|
end
|
18
18
|
end
|
data/lib/keycloak-admin.rb
CHANGED
@@ -3,6 +3,7 @@ require "logger"
|
|
3
3
|
require_relative "keycloak-admin/configuration"
|
4
4
|
require_relative "keycloak-admin/client/client"
|
5
5
|
require_relative "keycloak-admin/client/client_client"
|
6
|
+
require_relative "keycloak-admin/client/client_role_client"
|
6
7
|
require_relative "keycloak-admin/client/client_role_mappings_client"
|
7
8
|
require_relative "keycloak-admin/client/group_client"
|
8
9
|
require_relative "keycloak-admin/client/realm_client"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: keycloak-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorent Lempereur
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- lib/keycloak-admin.rb
|
92
92
|
- lib/keycloak-admin/client/client.rb
|
93
93
|
- lib/keycloak-admin/client/client_client.rb
|
94
|
+
- lib/keycloak-admin/client/client_role_client.rb
|
94
95
|
- lib/keycloak-admin/client/client_role_mappings_client.rb
|
95
96
|
- lib/keycloak-admin/client/configurable_token_client.rb
|
96
97
|
- lib/keycloak-admin/client/group_client.rb
|