keycloak_ruby 0.1.0 → 0.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 216f908dbd646323e0ec98f9ca986e28fa8fe1cbae15f2116a3f9cb48359aa5f
4
- data.tar.gz: d2aa97f421dc6cdc24541af0687fd1eadb9efb92c85fc81f4c2d79a91cd77511
3
+ metadata.gz: 69b02c30af6136bdddbf2bbd025fb4b9468eb4cbc483367ede0774bdc3c4ba71
4
+ data.tar.gz: 6f080dfe0802d3124ca38b09077b4fa9793c8032694919b2eb7bccf008fb745a
5
5
  SHA512:
6
- metadata.gz: 3904f9a9a913ea36c63c097d998521ea1dba3d2c4119a4902ec729c4672403a841fe88084a8a33f6d75cfe4c5878555b6e99acabf2f2efbeda50cb40ff70d86e
7
- data.tar.gz: c4eba4ea1d50c4aa4efcccd09d5ecf537c6df574fbc9cfd7c9396f4b2df134fd4831481dc346b8180060b48565b8814ea40228b237e371fc09ac0bfa1448952a
6
+ metadata.gz: bb4794636898be09829f9bf14395db896af56ddcb9ef92738225f95ad23be49135463c9deb0abaa7274d453574818647326cba80c89e306b1098ab5169805746
7
+ data.tar.gz: 3450f8d4fdd49e76b05fbd596078d03df83cb3b5d9869f93e8f9525ddac8a8dabaa7c089e55b141d375bfa32209e944615b799ee1a036dd5236c3bc82d20d86b
data/.rspec_status CHANGED
@@ -1,68 +1,68 @@
1
1
  example_id | status | run_time |
2
2
  -------------------------------------------------------- | ------ | --------------- |
3
- ./spec/keycloak_ruby/client_spec.rb[1:1:1:1] | passed | 0.0199 seconds |
4
- ./spec/keycloak_ruby/client_spec.rb[1:1:2:1] | passed | 0.00285 seconds |
5
- ./spec/keycloak_ruby/client_spec.rb[1:2:1:1] | passed | 0.00759 seconds |
6
- ./spec/keycloak_ruby/client_spec.rb[1:2:2:1] | passed | 0.00223 seconds |
7
- ./spec/keycloak_ruby/client_spec.rb[1:3:1] | passed | 0.00548 seconds |
8
- ./spec/keycloak_ruby/client_spec.rb[1:3:2] | passed | 0.00359 seconds |
9
- ./spec/keycloak_ruby/client_spec.rb[1:4:1:1] | passed | 0.00177 seconds |
10
- ./spec/keycloak_ruby/client_spec.rb[1:4:2:1] | passed | 0.0016 seconds |
11
- ./spec/keycloak_ruby/client_spec.rb[1:5:1] | passed | 0.00209 seconds |
12
- ./spec/keycloak_ruby/client_spec.rb[1:6:1:1] | passed | 0.00373 seconds |
13
- ./spec/keycloak_ruby/client_spec.rb[1:6:2:1] | passed | 0.0018 seconds |
14
- ./spec/keycloak_ruby/config_spec.rb[1:1:1:1] | passed | 0.0008 seconds |
15
- ./spec/keycloak_ruby/config_spec.rb[1:1:1:2] | passed | 0.00067 seconds |
16
- ./spec/keycloak_ruby/config_spec.rb[1:1:1:3] | passed | 0.00055 seconds |
17
- ./spec/keycloak_ruby/config_spec.rb[1:1:1:4] | passed | 0.00053 seconds |
18
- ./spec/keycloak_ruby/config_spec.rb[1:1:1:5] | passed | 0.0005 seconds |
19
- ./spec/keycloak_ruby/config_spec.rb[1:1:2:1] | passed | 0.0001 seconds |
20
- ./spec/keycloak_ruby/config_spec.rb[1:2:1] | passed | 0.00057 seconds |
21
- ./spec/keycloak_ruby/config_spec.rb[1:2:2] | passed | 0.00051 seconds |
22
- ./spec/keycloak_ruby/config_spec.rb[1:2:3] | passed | 0.00053 seconds |
23
- ./spec/keycloak_ruby/config_spec.rb[1:2:4] | passed | 0.00049 seconds |
24
- ./spec/keycloak_ruby/config_spec.rb[1:3:1] | passed | 0.00043 seconds |
25
- ./spec/keycloak_ruby/config_spec.rb[1:3:2] | passed | 0.0005 seconds |
26
- ./spec/keycloak_ruby/config_spec.rb[1:3:3] | passed | 0.00043 seconds |
27
- ./spec/keycloak_ruby/config_spec.rb[1:3:4] | passed | 0.00043 seconds |
28
- ./spec/keycloak_ruby/config_spec.rb[1:4:1:1] | passed | 0.00611 seconds |
29
- ./spec/keycloak_ruby/config_spec.rb[1:4:2:1] | passed | 0.00068 seconds |
30
- ./spec/keycloak_ruby/config_spec.rb[1:4:2:2] | passed | 0.00048 seconds |
31
- ./spec/keycloak_ruby/request_performer_spec.rb[1:1:1:1] | passed | 0.00165 seconds |
32
- ./spec/keycloak_ruby/request_performer_spec.rb[1:1:1:2] | passed | 0.00123 seconds |
33
- ./spec/keycloak_ruby/request_performer_spec.rb[1:1:2:1] | passed | 0.00105 seconds |
34
- ./spec/keycloak_ruby/request_performer_spec.rb[1:1:3:1] | passed | 0.00091 seconds |
35
- ./spec/keycloak_ruby/request_performer_spec.rb[1:1:4:1] | passed | 0.00081 seconds |
36
- ./spec/keycloak_ruby/response_validator_spec.rb[1:1:1:1] | passed | 0.00095 seconds |
37
- ./spec/keycloak_ruby/response_validator_spec.rb[1:1:2:1] | passed | 0.00026 seconds |
38
- ./spec/keycloak_ruby/response_validator_spec.rb[1:1:3:1] | passed | 0.00025 seconds |
39
- ./spec/keycloak_ruby/response_validator_spec.rb[1:1:4:1] | passed | 0.00017 seconds |
40
- ./spec/keycloak_ruby/response_validator_spec.rb[1:1:5:1] | passed | 0.00017 seconds |
41
- ./spec/keycloak_ruby/response_validator_spec.rb[1:1:6:1] | passed | 0.00018 seconds |
42
- ./spec/keycloak_ruby/response_validator_spec.rb[1:2:1:1] | passed | 0.00018 seconds |
43
- ./spec/keycloak_ruby/response_validator_spec.rb[1:2:2:1] | passed | 0.00026 seconds |
44
- ./spec/keycloak_ruby/response_validator_spec.rb[1:2:3:1] | passed | 0.00021 seconds |
45
- ./spec/keycloak_ruby/response_validator_spec.rb[1:2:4:1] | passed | 0.00025 seconds |
46
- ./spec/keycloak_ruby/response_validator_spec.rb[1:2:5:1] | passed | 0.00065 seconds |
47
- ./spec/keycloak_ruby/response_validator_spec.rb[1:2:6:1] | passed | 0.00038 seconds |
48
- ./spec/keycloak_ruby/response_validator_spec.rb[1:2:7:1] | passed | 0.00028 seconds |
49
- ./spec/keycloak_ruby/token_refresher_spec.rb[1:1:1:1] | passed | 0.00213 seconds |
50
- ./spec/keycloak_ruby/token_refresher_spec.rb[1:1:1:2] | passed | 0.00152 seconds |
51
- ./spec/keycloak_ruby/token_refresher_spec.rb[1:1:2:1] | passed | 0.00129 seconds |
52
- ./spec/keycloak_ruby/token_refresher_spec.rb[1:1:3:1] | passed | 0.00084 seconds |
53
- ./spec/keycloak_ruby/token_refresher_spec.rb[1:1:4:1] | passed | 0.0012 seconds |
54
- ./spec/keycloak_ruby/token_service_spec.rb[1:1:1:1] | passed | 0.01326 seconds |
55
- ./spec/keycloak_ruby/token_service_spec.rb[1:1:2:1] | passed | 0.00254 seconds |
56
- ./spec/keycloak_ruby/token_service_spec.rb[1:1:2:2] | passed | 0.00222 seconds |
57
- ./spec/keycloak_ruby/token_service_spec.rb[1:2:1] | passed | 0.00087 seconds |
58
- ./spec/keycloak_ruby/token_service_spec.rb[1:2:2] | passed | 0.00079 seconds |
59
- ./spec/keycloak_ruby/token_service_spec.rb[1:2:3] | passed | 0.00074 seconds |
60
- ./spec/keycloak_ruby/token_service_spec.rb[1:3:1] | passed | 0.00073 seconds |
61
- ./spec/keycloak_ruby/token_service_spec.rb[1:3:2] | passed | 0.00087 seconds |
62
- ./spec/keycloak_ruby/token_service_spec.rb[1:3:3] | passed | 0.00067 seconds |
63
- ./spec/keycloak_ruby/token_service_spec.rb[1:4:1:1] | passed | 0.00127 seconds |
64
- ./spec/keycloak_ruby/token_service_spec.rb[1:4:2:1] | passed | 0.00194 seconds |
65
- ./spec/keycloak_ruby/token_service_spec.rb[1:4:3:1] | passed | 0.0013 seconds |
66
- ./spec/keycloak_ruby/token_service_spec.rb[1:4:3:2] | passed | 0.00126 seconds |
67
- ./spec/keycloak_ruby/token_service_spec.rb[1:5:1] | passed | 0.02193 seconds |
68
- ./spec/keycloak_ruby_spec.rb[1:1] | passed | 0.00022 seconds |
3
+ ./spec/keycloak_ruby/client_spec.rb[1:1:1:1] | passed | 0.01112 seconds |
4
+ ./spec/keycloak_ruby/client_spec.rb[1:1:2:1] | passed | 0.00164 seconds |
5
+ ./spec/keycloak_ruby/client_spec.rb[1:2:1:1] | passed | 0.00447 seconds |
6
+ ./spec/keycloak_ruby/client_spec.rb[1:2:2:1] | passed | 0.00116 seconds |
7
+ ./spec/keycloak_ruby/client_spec.rb[1:3:1] | passed | 0.00283 seconds |
8
+ ./spec/keycloak_ruby/client_spec.rb[1:3:2] | passed | 0.00209 seconds |
9
+ ./spec/keycloak_ruby/client_spec.rb[1:4:1:1] | passed | 0.00114 seconds |
10
+ ./spec/keycloak_ruby/client_spec.rb[1:4:2:1] | passed | 0.00102 seconds |
11
+ ./spec/keycloak_ruby/client_spec.rb[1:5:1] | passed | 0.00116 seconds |
12
+ ./spec/keycloak_ruby/client_spec.rb[1:6:1:1] | passed | 0.00173 seconds |
13
+ ./spec/keycloak_ruby/client_spec.rb[1:6:2:1] | passed | 0.00092 seconds |
14
+ ./spec/keycloak_ruby/config_spec.rb[1:1:1:1] | passed | 0.00052 seconds |
15
+ ./spec/keycloak_ruby/config_spec.rb[1:1:1:2] | passed | 0.00045 seconds |
16
+ ./spec/keycloak_ruby/config_spec.rb[1:1:1:3] | passed | 0.00048 seconds |
17
+ ./spec/keycloak_ruby/config_spec.rb[1:1:1:4] | passed | 0.00038 seconds |
18
+ ./spec/keycloak_ruby/config_spec.rb[1:1:1:5] | passed | 0.00039 seconds |
19
+ ./spec/keycloak_ruby/config_spec.rb[1:1:2:1] | passed | 0.00006 seconds |
20
+ ./spec/keycloak_ruby/config_spec.rb[1:2:1] | passed | 0.00044 seconds |
21
+ ./spec/keycloak_ruby/config_spec.rb[1:2:2] | passed | 0.0004 seconds |
22
+ ./spec/keycloak_ruby/config_spec.rb[1:2:3] | passed | 0.00026 seconds |
23
+ ./spec/keycloak_ruby/config_spec.rb[1:2:4] | passed | 0.00025 seconds |
24
+ ./spec/keycloak_ruby/config_spec.rb[1:3:1] | passed | 0.00024 seconds |
25
+ ./spec/keycloak_ruby/config_spec.rb[1:3:2] | passed | 0.00024 seconds |
26
+ ./spec/keycloak_ruby/config_spec.rb[1:3:3] | passed | 0.00027 seconds |
27
+ ./spec/keycloak_ruby/config_spec.rb[1:3:4] | passed | 0.00024 seconds |
28
+ ./spec/keycloak_ruby/config_spec.rb[1:4:1:1] | passed | 0.00379 seconds |
29
+ ./spec/keycloak_ruby/config_spec.rb[1:4:2:1] | passed | 0.00042 seconds |
30
+ ./spec/keycloak_ruby/config_spec.rb[1:4:2:2] | passed | 0.00029 seconds |
31
+ ./spec/keycloak_ruby/request_performer_spec.rb[1:1:1:1] | passed | 0.00099 seconds |
32
+ ./spec/keycloak_ruby/request_performer_spec.rb[1:1:1:2] | passed | 0.0008 seconds |
33
+ ./spec/keycloak_ruby/request_performer_spec.rb[1:1:2:1] | passed | 0.00067 seconds |
34
+ ./spec/keycloak_ruby/request_performer_spec.rb[1:1:3:1] | passed | 0.00058 seconds |
35
+ ./spec/keycloak_ruby/request_performer_spec.rb[1:1:4:1] | passed | 0.0006 seconds |
36
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:1:1:1] | passed | 0.00065 seconds |
37
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:1:2:1] | passed | 0.00017 seconds |
38
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:1:3:1] | passed | 0.00021 seconds |
39
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:1:4:1] | passed | 0.00009 seconds |
40
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:1:5:1] | passed | 0.00008 seconds |
41
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:1:6:1] | passed | 0.00011 seconds |
42
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:2:1:1] | passed | 0.0001 seconds |
43
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:2:2:1] | passed | 0.00012 seconds |
44
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:2:3:1] | passed | 0.0001 seconds |
45
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:2:4:1] | passed | 0.00009 seconds |
46
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:2:5:1] | passed | 0.00011 seconds |
47
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:2:6:1] | passed | 0.00016 seconds |
48
+ ./spec/keycloak_ruby/response_validator_spec.rb[1:2:7:1] | passed | 0.00011 seconds |
49
+ ./spec/keycloak_ruby/token_refresher_spec.rb[1:1:1:1] | passed | 0.00085 seconds |
50
+ ./spec/keycloak_ruby/token_refresher_spec.rb[1:1:1:2] | passed | 0.00077 seconds |
51
+ ./spec/keycloak_ruby/token_refresher_spec.rb[1:1:2:1] | passed | 0.00093 seconds |
52
+ ./spec/keycloak_ruby/token_refresher_spec.rb[1:1:3:1] | passed | 0.00056 seconds |
53
+ ./spec/keycloak_ruby/token_refresher_spec.rb[1:1:4:1] | passed | 0.00072 seconds |
54
+ ./spec/keycloak_ruby/token_service_spec.rb[1:1:1:1] | passed | 0.00696 seconds |
55
+ ./spec/keycloak_ruby/token_service_spec.rb[1:1:2:1] | passed | 0.00129 seconds |
56
+ ./spec/keycloak_ruby/token_service_spec.rb[1:1:2:2] | passed | 0.00826 seconds |
57
+ ./spec/keycloak_ruby/token_service_spec.rb[1:2:1] | passed | 0.00072 seconds |
58
+ ./spec/keycloak_ruby/token_service_spec.rb[1:2:2] | passed | 0.00044 seconds |
59
+ ./spec/keycloak_ruby/token_service_spec.rb[1:2:3] | passed | 0.0004 seconds |
60
+ ./spec/keycloak_ruby/token_service_spec.rb[1:3:1] | passed | 0.00056 seconds |
61
+ ./spec/keycloak_ruby/token_service_spec.rb[1:3:2] | passed | 0.00083 seconds |
62
+ ./spec/keycloak_ruby/token_service_spec.rb[1:3:3] | passed | 0.00038 seconds |
63
+ ./spec/keycloak_ruby/token_service_spec.rb[1:4:1:1] | passed | 0.00057 seconds |
64
+ ./spec/keycloak_ruby/token_service_spec.rb[1:4:2:1] | passed | 0.00072 seconds |
65
+ ./spec/keycloak_ruby/token_service_spec.rb[1:4:3:1] | passed | 0.00056 seconds |
66
+ ./spec/keycloak_ruby/token_service_spec.rb[1:4:3:2] | passed | 0.00055 seconds |
67
+ ./spec/keycloak_ruby/token_service_spec.rb[1:5:1] | passed | 0.0007 seconds |
68
+ ./spec/keycloak_ruby_spec.rb[1:1] | passed | 0.00005 seconds |
@@ -42,6 +42,32 @@ module KeycloakRuby
42
42
  client.find_users(search_string)
43
43
  end
44
44
 
45
+ # Finds a Keycloak user by email.
46
+ # If no user is found, creates a new user in Keycloak with the given attributes.
47
+ #
48
+ # @param user_attrs [Hash] A hash of user attributes. Must include:
49
+ # :username [String] - the username for the user
50
+ # :email [String] - the user's email address
51
+ # :password [String] - the user's initial password
52
+ # :temporary [Boolean] (optional) - whether the password should be temporary (default: true)
53
+ #
54
+ # @return [Hash] Result hash containing:
55
+ # :user_data [Hash] - Keycloak user data (either found or newly created)
56
+ # :created [Boolean] - true if the user was created, false if already existed
57
+ #
58
+ # @raise [KeycloakRuby::Errors::Error] if any request to Keycloak fails
59
+ def find_or_create(user_attrs = {})
60
+ users = find(user_attrs[:email])
61
+ user = users.detect { |u| u["email"].casecmp?(user_attrs[:email]) }
62
+
63
+ if user
64
+ { user_data: user, created: false }
65
+ else
66
+ created_user = create(user_attrs)
67
+ { user_data: created_user, created: true }
68
+ end
69
+ end
70
+
45
71
  private
46
72
 
47
73
  # Provides a singleton instance of the KeycloakRuby::Client.
@@ -21,7 +21,7 @@ module KeycloakRuby
21
21
  # Minor version number (backwards-compatible functionality)
22
22
  MINOR = 1
23
23
  # Patch version number (backwards-compatible bug fixes)
24
- PATCH = 0
24
+ PATCH = 1
25
25
  # Pre-release version (nil for stable releases)
26
26
  PRE = nil
27
27
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keycloak_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Arkhipov
8
8
  - Georgy Shcherbakov
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-04 00:00:00.000000000 Z
11
+ date: 2025-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty