passkeys-rails 0.3.1 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a137b9b4f2ab7aac24fef0747ff112588215d496034f0542983df3790bc32de7
4
- data.tar.gz: 412185131a984a883a11af7fae1bbbb69806819a978871a08e0929921c766fe4
3
+ metadata.gz: 4e61d5a7a298fa14ddb50a83501d81e6bb8a26484d75502ebbc738817ce30683
4
+ data.tar.gz: 80dcbda69e419843dd65f90c585260f3aaf03c8ec409036615b8257fb5d4134a
5
5
  SHA512:
6
- metadata.gz: bdf2974d31cb561bbeabaf599a29d99bb9cda2e4050cff913cbe5104a747c4eba2eb11a53936fcef013861ede39051208a2edbc3062a6b25a34476678388eba9
7
- data.tar.gz: 149c795d0b56a7569170160426b466ff42abc75bcb2f46fc5adae3b35ad3eb9d6d465ce05f0834cbbfaf3bc30944d809b776c1112913c0e490175c316784e859
6
+ metadata.gz: 49b56d3d37c4d2d8e78cbc6e67bbfb3df72c17f7cb00d8398ee684cfb5d5f81b94b2ef68eb7d16f69e0aac23584f77937a98cc94ba9d89dda70dd021021100ab
7
+ data.tar.gz: 763ffc7c99aff21990d9a51416e21aaa8e840a67ddd5eaa0c05761a8704d63f0a5be5c81ee140d54e3b3c15d8fb367bf5344551dc011268bdfe9327869461f41
data/CHANGELOG.md CHANGED
@@ -1,60 +1,70 @@
1
- ### 0.3.1
1
+ ### 0.3.3 (2025/01/13)
2
2
 
3
- * Fixed a bug in reading session/cookie variables
4
- * Added webauthn configuration parameters to this gem's configuration
5
- * Moved configuration to its own class
6
- * Added more info to the README
3
+ - Avoid double encoding the auth challenge
4
+ - Relax rails version constraint
7
5
 
8
- ### 0.3.0
6
+ ### 0.3.2 (2024/10/01)
9
7
 
10
- * Added debug_register endpoint.
11
- * Fixed authenticatable_params for register enpoint.
12
- * Added notifications to certain controller actions.
13
- * Improved spec error helper.
8
+ - Changed from unsigned cookies to short lived signed cookies
9
+ - Added RELEASING.md
14
10
 
15
- ### 0.2.1
11
+ ### 0.3.1 (2023/11/30)
12
+
13
+ - Fixed a bug in reading session/cookie variables
14
+ - Added webauthn configuration parameters to this gem's configuration
15
+ - Moved configuration to its own class
16
+ - Added more info to the README
17
+
18
+ ### 0.3.0 (2023/08/01)
19
+
20
+ - Added debug_register endpoint.
21
+ - Fixed authenticatable_params for register enpoint.
22
+ - Added notifications to certain controller actions.
23
+ - Improved spec error helper.
24
+
25
+ ### 0.2.1 (2023/07/29)
16
26
 
17
27
  Added ability to pass either the auth token string or a request with one in the header to authenticate methods.
18
28
 
19
- ### 0.2.0
29
+ ### 0.2.0 (2023/07/28)
20
30
 
21
- * Added passkeys/debug_login functionality.
31
+ - Added passkeys/debug_login functionality.
22
32
 
23
- ### 0.1.7
33
+ ### 0.1.7 (2023/07/26)
24
34
 
25
- * Added IntegrationHelpers to support client testing.
26
- * Updated methods for interfacing with Rails client app.
27
- * Changed route path added by the generator.
35
+ - Added IntegrationHelpers to support client testing.
36
+ - Updated methods for interfacing with Rails client app.
37
+ - Changed route path added by the generator.
28
38
 
29
- ### 0.1.6
39
+ ### 0.1.6 (2023/07/26)
30
40
 
31
- * Added default_class and class_whitelist config parameters.
41
+ - Added default_class and class_whitelist config parameters.
32
42
 
33
- ### 0.1.5
43
+ ### 0.1.5 (2023/07/24)
34
44
 
35
- * Updated validation to ensure the agent has completed registration to be considered valid.
45
+ - Updated validation to ensure the agent has completed registration to be considered valid.
36
46
 
37
- ### 0.1.4
47
+ ### 0.1.4 (2023/07/23)
38
48
 
39
- * Changed namespace from Passkeys::Rails to PasskeysRails
49
+ - Changed namespace from Passkeys::Rails to PasskeysRails
40
50
 
41
- ### 0.1.3
51
+ ### 0.1.3 (2023/07/23)
42
52
 
43
- * More restructuring and fixed issue where autoloading failed
53
+ - More restructuring and fixed issue where autoloading failed
44
54
  during client app initialization.
45
55
 
46
- ### 0.1.2
56
+ ### 0.1.2 (2023/07/23)
47
57
 
48
- * Restructured lib directory.
58
+ - Restructured lib directory.
49
59
 
50
- * Fixed naming convention for gem/gemspec.
60
+ - Fixed naming convention for gem/gemspec.
51
61
 
52
- * Fixed exception handling.
62
+ - Fixed exception handling.
53
63
 
54
- ### 0.1.1
64
+ ### 0.1.1 (2023/07/23)
55
65
 
56
- * Fixed dependency
66
+ - Fixed dependency
57
67
 
58
- ### 0.1.0
68
+ ### 0.1.0 (2023/07/23)
59
69
 
60
- * Initial release - looking for feedback
70
+ - Initial release - looking for feedback
data/README.md CHANGED
@@ -188,7 +188,7 @@ end
188
188
  - When `.code` is `:expired_token`, `.message` is **The token has expired**, which means that the token is valid, but expired, thuis it's not considered authentic.
189
189
  - When `.code` is `:token_error`, `.message` is a description of the error. This is a catch-all in the event we are unable to decode the token.
190
190
 
191
- In the future, the intention is to have the `.code` value stay consistent even if the `.message` changes. This also allows you to localize the messages as need using the code.
191
+ In the future, the intention is to have the `.code` value stay consistent even if the `.message` changes. This also allows you to localize the messages as needed using the code.
192
192
 
193
193
  ## Testing
194
194
 
@@ -239,11 +239,11 @@ For iOS, you need to associate your app with your server. This amounts to setti
239
239
 
240
240
  ### Mobile API Endpoints
241
241
 
242
- There are 3 groups of API endpoints that your mobile application may consume.
242
+ There are 3 groups of API endpoints that your mobile application might consume.
243
243
 
244
244
  1. Unauthenticated (public) endpoints
245
245
  1. Authenticated (private) endpoints
246
- 1. Passey endpoints (for supporting authentication)
246
+ 1. Passkey endpoints (for supporting authentication)
247
247
 
248
248
  **Unauthenticated endpoints** can be consumed without any authentication.
249
249
 
@@ -253,7 +253,7 @@ There are 3 groups of API endpoints that your mobile application may consume.
253
253
 
254
254
  This gem supports the Passkey endpoints.
255
255
 
256
- ### Endpoints
256
+ ### Passkey Endpoints
257
257
 
258
258
  * [POST /passkeys/challenge](post-passkeys-challenge)
259
259
  * [POST /passkeys/register](post-passkeys-register)
@@ -291,12 +291,18 @@ Some endpoints return an `AuthResponse`, which has this JSON structure:
291
291
 
292
292
  Submit this to begin registration or authentication.
293
293
 
294
- Supply a `{ "username": "unique username" } ` to register a new credential.
294
+ #### Registration (register)
295
+
296
+ To begin registration of a new credential, supply a `{ "username": "unique username" }`.
295
297
  If all goes well, the JSON response will be the `options_for_create` from webauthn.
296
298
  If the username is already in use, or anything else goes wrong, an error with code `validation_errors` will be returned.
297
299
 
298
- Omit the `username` when authenticating (logging in).
299
- The JSON response will be the `options_for_get` from webauthn.
300
+ After receiving a successful response, follow up with a POST to `/passkeys/register`, below.
301
+
302
+ #### Authentication (login)
303
+ To begin authenticating an existing credential, omit the `username`. The JSON response will be the `options_for_get` from webauthn.
304
+
305
+ After receiving a successful response, follow up with a POST to `/passkeys/authenticate`, below.
300
306
 
301
307
  ### POST /passkeys/register
302
308
 
@@ -391,17 +397,17 @@ Possible **failure codes** (using the `ErrorResponse` structure) are:
391
397
 
392
398
  As it may not be possible to acess Passkey functionality in mobile simulators, this endpoint may be called to register a username while bypassing the normal challenge/response sequence.
393
399
 
394
- This endpoint only responds if DEBUG_LOGIN_REGEX is set in the server environment. It is **very insecure to set this variable in a production environment** as it bypasses all Passkey checks. It is only intended to be used during mobile application development.
400
+ This endpoint only responds if `DEBUG_LOGIN_REGEX` is set in the server environment. It is **very insecure to set this variable in a production environment** as it bypasses all Passkey checks. It is only intended to be used during mobile application development.
395
401
 
396
402
  To use this endpoint:
397
403
 
398
- 1. Set DEBUG_LOGIN_REGEX to a regex that matches any username you want to use during development - for example `^test(-\d+)?$` will match `test`, `test-1`, `test-123`, etc.
404
+ 1. Set `DEBUG_LOGIN_REGEX` to a regex that matches any username you want to use during development - for example `^test(-\d+)?$` will match `test`, `test-1`, `test-123`, etc.
399
405
 
400
- 1. In the mobile application, call this endpoint in stead of the /passkeys/challenge and /passkeys/register. The response is identicial to that of /passkeys/register.
406
+ 1. In the mobile application, call this endpoint in stead of the `/passkeys/challenge` and `/passkeys/register`. The response is identicial to that of `/passkeys/register`.
401
407
 
402
- 1. Use the response as if it was from /passkeys/register.
408
+ 1. Use the response as if it was from `/passkeys/register`.
403
409
 
404
- If you supply a username that doesn't match the DEBUG_LOGIN_REGEX, the endpoint will respond with an error.
410
+ If you supply a username that doesn't match the `DEBUG_LOGIN_REGEX`, the endpoint will respond with an error.
405
411
 
406
412
  Supply the following JSON structure:
407
413
 
@@ -425,19 +431,19 @@ Possible **failure codes** (using the `ErrorResponse` structure) are:
425
431
 
426
432
  As it may not be possible to acess Passkey functionality in mobile simulators, this endpoint may be called to login (authenticate) a username while bypassing the normal challenge/response sequence.
427
433
 
428
- This endpoint only responds if DEBUG_LOGIN_REGEX is set in the server environment. It is **very insecure to set this variable in a production environment** as it bypasses all Passkey checks. It is only intended to be used during mobile application development.
434
+ This endpoint only responds if `DEBUG_LOGIN_REGEX` is set in the server environment. It is **very insecure to set this variable in a production environment** as it bypasses all Passkey checks. It is only intended to be used during mobile application development.
429
435
 
430
436
  To use this endpoint:
431
437
 
432
438
  1. Manually create one or more PasskeysRails::Agent records in the database. A unique username is required for each.
433
439
 
434
- 1. Set DEBUG_LOGIN_REGEX to a regex that matches any username you want to use during development - for example `^test(-\d+)?$` will match `test`, `test-1`, `test-123`, etc.
440
+ 1. Set `DEBUG_LOGIN_REGEX` to a regex that matches any username you want to use during development - for example `^test(-\d+)?$` will match `test`, `test-1`, `test-123`, etc.
435
441
 
436
- 1. In the mobile application, call this endpoint in stead of the /passkeys/challenge and /passkeys/authenticate. The response is identicial to that of /passkeys/authenticate.
442
+ 1. In the mobile application, call this endpoint in stead of the `/passkeys/challenge` and `/passkeys/authenticate`. The response is identicial to that of `/passkeys/authenticate`.
437
443
 
438
- 1. Use the response as if it was from /passkeys/authenticate.
444
+ 1. Use the response as if it was from `/passkeys/authenticate`.
439
445
 
440
- If you supply a username that doesn't match the DEBUG_LOGIN_REGEX, the endpoint will respond with an error.
446
+ If you supply a username that doesn't match the `DEBUG_LOGIN_REGEX`, the endpoint will respond with an error.
441
447
 
442
448
  Supply the following JSON structure:
443
449
 
@@ -7,13 +7,19 @@ module PasskeysRails
7
7
  result = PasskeysRails::BeginChallenge.call!(username: challenge_params[:username])
8
8
 
9
9
  # Store the challenge so we can verify the future register or authentication request
10
- cookies[:passkeys_rails] = result.cookie_data
10
+ cookies.signed[:passkeys_rails] = {
11
+ value: result.cookie_data.to_json,
12
+ expire: Time.now.utc + (result.response.timeout / 1000),
13
+ secure: true,
14
+ httponly: true,
15
+ same_site: :strict
16
+ }
11
17
 
12
18
  render json: result.response.as_json
13
19
  end
14
20
 
15
21
  def register
16
- cookie_data = cookies["passkeys_rails"] || {}
22
+ cookie_data = JSON.parse(cookies.signed["passkeys_rails"] || "{}")
17
23
  result = PasskeysRails::FinishRegistration.call!(credential: attestation_credential_params.to_h,
18
24
  authenticatable_info: authenticatable_params&.to_h,
19
25
  username: cookie_data["username"],
@@ -25,7 +31,7 @@ module PasskeysRails
25
31
  end
26
32
 
27
33
  def authenticate
28
- cookie_data = cookies["passkeys_rails"] || {}
34
+ cookie_data = JSON.parse(cookies.signed["passkeys_rails"] || "{}")
29
35
  result = PasskeysRails::FinishAuthentication.call!(credential: authentication_params.to_h,
30
36
  challenge: cookie_data["challenge"])
31
37
 
@@ -28,7 +28,7 @@ module PasskeysRails
28
28
  def cookie_data(options)
29
29
  {
30
30
  username:,
31
- challenge: WebAuthn.standard_encoder.encode(options.challenge)
31
+ challenge: options.challenge
32
32
  }
33
33
  end
34
34
  end
@@ -1,3 +1,3 @@
1
1
  module PasskeysRails
2
- VERSION = "0.3.1".freeze
2
+ VERSION = "0.3.3".freeze
3
3
  end
metadata CHANGED
@@ -1,35 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: passkeys-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Troy Anderson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-30 00:00:00.000000000 Z
11
+ date: 2025-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '7.0'
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
- version: 7.0.5
19
+ version: '7.2'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '7.0'
30
24
  - - ">="
31
25
  - !ruby/object:Gem::Version
32
- version: 7.0.5
26
+ version: '7.2'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: interactor
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -50,266 +44,280 @@ dependencies:
50
44
  requirements:
51
45
  - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: 2.7.1
47
+ version: 2.9.1
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
51
  requirements:
58
52
  - - "~>"
59
53
  - !ruby/object:Gem::Version
60
- version: 2.7.1
54
+ version: 2.9.1
61
55
  - !ruby/object:Gem::Dependency
62
56
  name: webauthn
63
57
  requirement: !ruby/object:Gem::Requirement
64
58
  requirements:
65
59
  - - "~>"
66
60
  - !ruby/object:Gem::Version
67
- version: 3.0.0
61
+ version: 3.1.0
68
62
  type: :runtime
69
63
  prerelease: false
70
64
  version_requirements: !ruby/object:Gem::Requirement
71
65
  requirements:
72
66
  - - "~>"
73
67
  - !ruby/object:Gem::Version
74
- version: 3.0.0
68
+ version: 3.1.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: cbor
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.5.9.8
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.5.9.8
75
83
  - !ruby/object:Gem::Dependency
76
84
  name: dotenv
77
85
  requirement: !ruby/object:Gem::Requirement
78
86
  requirements:
79
87
  - - "~>"
80
88
  - !ruby/object:Gem::Version
81
- version: 2.8.1
89
+ version: 3.1.4
82
90
  type: :development
83
91
  prerelease: false
84
92
  version_requirements: !ruby/object:Gem::Requirement
85
93
  requirements:
86
94
  - - "~>"
87
95
  - !ruby/object:Gem::Version
88
- version: 2.8.1
96
+ version: 3.1.4
89
97
  - !ruby/object:Gem::Dependency
90
98
  name: puma
91
99
  requirement: !ruby/object:Gem::Requirement
92
100
  requirements:
93
101
  - - "~>"
94
102
  - !ruby/object:Gem::Version
95
- version: 5.6.5
103
+ version: 6.4.3
96
104
  type: :development
97
105
  prerelease: false
98
106
  version_requirements: !ruby/object:Gem::Requirement
99
107
  requirements:
100
108
  - - "~>"
101
109
  - !ruby/object:Gem::Version
102
- version: 5.6.5
110
+ version: 6.4.3
103
111
  - !ruby/object:Gem::Dependency
104
112
  name: rake
105
113
  requirement: !ruby/object:Gem::Requirement
106
114
  requirements:
107
115
  - - "~>"
108
116
  - !ruby/object:Gem::Version
109
- version: '13.0'
117
+ version: 13.2.1
110
118
  type: :development
111
119
  prerelease: false
112
120
  version_requirements: !ruby/object:Gem::Requirement
113
121
  requirements:
114
122
  - - "~>"
115
123
  - !ruby/object:Gem::Version
116
- version: '13.0'
124
+ version: 13.2.1
117
125
  - !ruby/object:Gem::Dependency
118
126
  name: sprockets-rails
119
127
  requirement: !ruby/object:Gem::Requirement
120
128
  requirements:
121
129
  - - "~>"
122
130
  - !ruby/object:Gem::Version
123
- version: 3.4.2
131
+ version: 3.5.2
124
132
  type: :development
125
133
  prerelease: false
126
134
  version_requirements: !ruby/object:Gem::Requirement
127
135
  requirements:
128
136
  - - "~>"
129
137
  - !ruby/object:Gem::Version
130
- version: 3.4.2
138
+ version: 3.5.2
131
139
  - !ruby/object:Gem::Dependency
132
140
  name: sqlite3
133
141
  requirement: !ruby/object:Gem::Requirement
134
142
  requirements:
135
143
  - - "~>"
136
144
  - !ruby/object:Gem::Version
137
- version: 1.6.3
145
+ version: 2.1.0
138
146
  type: :development
139
147
  prerelease: false
140
148
  version_requirements: !ruby/object:Gem::Requirement
141
149
  requirements:
142
150
  - - "~>"
143
151
  - !ruby/object:Gem::Version
144
- version: 1.6.3
152
+ version: 2.1.0
145
153
  - !ruby/object:Gem::Dependency
146
154
  name: codecov
147
155
  requirement: !ruby/object:Gem::Requirement
148
156
  requirements:
149
157
  - - "~>"
150
158
  - !ruby/object:Gem::Version
151
- version: 0.2.12
159
+ version: 0.6.0
152
160
  type: :development
153
161
  prerelease: false
154
162
  version_requirements: !ruby/object:Gem::Requirement
155
163
  requirements:
156
164
  - - "~>"
157
165
  - !ruby/object:Gem::Version
158
- version: 0.2.12
166
+ version: 0.6.0
159
167
  - !ruby/object:Gem::Dependency
160
168
  name: debug
161
169
  requirement: !ruby/object:Gem::Requirement
162
170
  requirements:
163
171
  - - "~>"
164
172
  - !ruby/object:Gem::Version
165
- version: 1.8.0
173
+ version: 1.9.2
166
174
  type: :development
167
175
  prerelease: false
168
176
  version_requirements: !ruby/object:Gem::Requirement
169
177
  requirements:
170
178
  - - "~>"
171
179
  - !ruby/object:Gem::Version
172
- version: 1.8.0
180
+ version: 1.9.2
173
181
  - !ruby/object:Gem::Dependency
174
182
  name: simplecov
175
183
  requirement: !ruby/object:Gem::Requirement
176
184
  requirements:
177
185
  - - "~>"
178
186
  - !ruby/object:Gem::Version
179
- version: 0.22.0
187
+ version: 0.21.2
180
188
  type: :development
181
189
  prerelease: false
182
190
  version_requirements: !ruby/object:Gem::Requirement
183
191
  requirements:
184
192
  - - "~>"
185
193
  - !ruby/object:Gem::Version
186
- version: 0.22.0
194
+ version: 0.21.2
187
195
  - !ruby/object:Gem::Dependency
188
196
  name: reek
189
197
  requirement: !ruby/object:Gem::Requirement
190
198
  requirements:
191
199
  - - "~>"
192
200
  - !ruby/object:Gem::Version
193
- version: 6.1.4
201
+ version: 6.3.0
194
202
  type: :development
195
203
  prerelease: false
196
204
  version_requirements: !ruby/object:Gem::Requirement
197
205
  requirements:
198
206
  - - "~>"
199
207
  - !ruby/object:Gem::Version
200
- version: 6.1.4
208
+ version: 6.3.0
201
209
  - !ruby/object:Gem::Dependency
202
210
  name: factory_bot_rails
203
211
  requirement: !ruby/object:Gem::Requirement
204
212
  requirements:
205
213
  - - "~>"
206
214
  - !ruby/object:Gem::Version
207
- version: 6.2.0
215
+ version: 6.4.3
208
216
  type: :development
209
217
  prerelease: false
210
218
  version_requirements: !ruby/object:Gem::Requirement
211
219
  requirements:
212
220
  - - "~>"
213
221
  - !ruby/object:Gem::Version
214
- version: 6.2.0
222
+ version: 6.4.3
215
223
  - !ruby/object:Gem::Dependency
216
224
  name: generator_spec
217
225
  requirement: !ruby/object:Gem::Requirement
218
226
  requirements:
219
227
  - - "~>"
220
228
  - !ruby/object:Gem::Version
221
- version: 0.9.4
229
+ version: 0.10.0
222
230
  type: :development
223
231
  prerelease: false
224
232
  version_requirements: !ruby/object:Gem::Requirement
225
233
  requirements:
226
234
  - - "~>"
227
235
  - !ruby/object:Gem::Version
228
- version: 0.9.4
236
+ version: 0.10.0
229
237
  - !ruby/object:Gem::Dependency
230
238
  name: rspec
231
239
  requirement: !ruby/object:Gem::Requirement
232
240
  requirements:
233
241
  - - "~>"
234
242
  - !ruby/object:Gem::Version
235
- version: '3.0'
243
+ version: 3.13.0
236
244
  type: :development
237
245
  prerelease: false
238
246
  version_requirements: !ruby/object:Gem::Requirement
239
247
  requirements:
240
248
  - - "~>"
241
249
  - !ruby/object:Gem::Version
242
- version: '3.0'
250
+ version: 3.13.0
243
251
  - !ruby/object:Gem::Dependency
244
252
  name: rspec-rails
245
253
  requirement: !ruby/object:Gem::Requirement
246
254
  requirements:
247
255
  - - "~>"
248
256
  - !ruby/object:Gem::Version
249
- version: 6.0.3
257
+ version: 7.0.1
250
258
  type: :development
251
259
  prerelease: false
252
260
  version_requirements: !ruby/object:Gem::Requirement
253
261
  requirements:
254
262
  - - "~>"
255
263
  - !ruby/object:Gem::Version
256
- version: 6.0.3
264
+ version: 7.0.1
257
265
  - !ruby/object:Gem::Dependency
258
266
  name: timecop
259
267
  requirement: !ruby/object:Gem::Requirement
260
268
  requirements:
261
269
  - - "~>"
262
270
  - !ruby/object:Gem::Version
263
- version: 0.9.6
271
+ version: 0.9.10
264
272
  type: :development
265
273
  prerelease: false
266
274
  version_requirements: !ruby/object:Gem::Requirement
267
275
  requirements:
268
276
  - - "~>"
269
277
  - !ruby/object:Gem::Version
270
- version: 0.9.6
278
+ version: 0.9.10
271
279
  - !ruby/object:Gem::Dependency
272
280
  name: rubocop
273
281
  requirement: !ruby/object:Gem::Requirement
274
282
  requirements:
275
283
  - - "~>"
276
284
  - !ruby/object:Gem::Version
277
- version: '1.21'
285
+ version: 1.66.1
278
286
  type: :development
279
287
  prerelease: false
280
288
  version_requirements: !ruby/object:Gem::Requirement
281
289
  requirements:
282
290
  - - "~>"
283
291
  - !ruby/object:Gem::Version
284
- version: '1.21'
292
+ version: 1.66.1
285
293
  - !ruby/object:Gem::Dependency
286
294
  name: rubocop-performance
287
295
  requirement: !ruby/object:Gem::Requirement
288
296
  requirements:
289
297
  - - "~>"
290
298
  - !ruby/object:Gem::Version
291
- version: 1.18.0
299
+ version: 1.22.1
292
300
  type: :development
293
301
  prerelease: false
294
302
  version_requirements: !ruby/object:Gem::Requirement
295
303
  requirements:
296
304
  - - "~>"
297
305
  - !ruby/object:Gem::Version
298
- version: 1.18.0
306
+ version: 1.22.1
299
307
  - !ruby/object:Gem::Dependency
300
308
  name: rubocop-rails
301
309
  requirement: !ruby/object:Gem::Requirement
302
310
  requirements:
303
311
  - - "~>"
304
312
  - !ruby/object:Gem::Version
305
- version: 2.20.2
313
+ version: 2.26.2
306
314
  type: :development
307
315
  prerelease: false
308
316
  version_requirements: !ruby/object:Gem::Requirement
309
317
  requirements:
310
318
  - - "~>"
311
319
  - !ruby/object:Gem::Version
312
- version: 2.20.2
320
+ version: 2.26.2
313
321
  - !ruby/object:Gem::Dependency
314
322
  name: rubocop-rake
315
323
  requirement: !ruby/object:Gem::Requirement
@@ -325,19 +333,61 @@ dependencies:
325
333
  - !ruby/object:Gem::Version
326
334
  version: 0.6.0
327
335
  - !ruby/object:Gem::Dependency
328
- name: rubocop-rspec
336
+ name: rubocop-rspec_rails
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - "~>"
340
+ - !ruby/object:Gem::Version
341
+ version: 2.30.0
342
+ type: :development
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ requirements:
346
+ - - "~>"
347
+ - !ruby/object:Gem::Version
348
+ version: 2.30.0
349
+ - !ruby/object:Gem::Dependency
350
+ name: rubocop-factory_bot
351
+ requirement: !ruby/object:Gem::Requirement
352
+ requirements:
353
+ - - "~>"
354
+ - !ruby/object:Gem::Version
355
+ version: 2.26.1
356
+ type: :development
357
+ prerelease: false
358
+ version_requirements: !ruby/object:Gem::Requirement
359
+ requirements:
360
+ - - "~>"
361
+ - !ruby/object:Gem::Version
362
+ version: 2.26.1
363
+ - !ruby/object:Gem::Dependency
364
+ name: danger-changelog
365
+ requirement: !ruby/object:Gem::Requirement
366
+ requirements:
367
+ - - "~>"
368
+ - !ruby/object:Gem::Version
369
+ version: 0.7.0
370
+ type: :development
371
+ prerelease: false
372
+ version_requirements: !ruby/object:Gem::Requirement
373
+ requirements:
374
+ - - "~>"
375
+ - !ruby/object:Gem::Version
376
+ version: 0.7.0
377
+ - !ruby/object:Gem::Dependency
378
+ name: danger-toc
329
379
  requirement: !ruby/object:Gem::Requirement
330
380
  requirements:
331
381
  - - "~>"
332
382
  - !ruby/object:Gem::Version
333
- version: 2.22.0
383
+ version: 0.2.0
334
384
  type: :development
335
385
  prerelease: false
336
386
  version_requirements: !ruby/object:Gem::Requirement
337
387
  requirements:
338
388
  - - "~>"
339
389
  - !ruby/object:Gem::Version
340
- version: 2.22.0
390
+ version: 0.2.0
341
391
  description: Devise is awesome, but we don't need all that UI/UX for PassKeys. This
342
392
  gem is to make it easy to provide a back end that authenticates a mobile front end
343
393
  with PassKeys.
@@ -409,7 +459,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
409
459
  - !ruby/object:Gem::Version
410
460
  version: '0'
411
461
  requirements: []
412
- rubygems_version: 3.4.17
462
+ rubygems_version: 3.4.21
413
463
  signing_key:
414
464
  specification_version: 4
415
465
  summary: PassKey authentication back end with simple API