rodauth 2.23.0 → 2.24.0
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 +4 -4
- data/CHANGELOG +10 -0
- data/doc/otp.rdoc +1 -0
- data/doc/recovery_codes.rdoc +1 -0
- data/doc/release_notes/2.24.0.txt +15 -0
- data/lib/rodauth/features/otp.rb +8 -2
- data/lib/rodauth/features/recovery_codes.rb +6 -1
- data/lib/rodauth/features/reset_password.rb +4 -4
- data/lib/rodauth/features/sms_codes.rb +1 -1
- data/lib/rodauth/version.rb +1 -1
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3db9ca9b25c4acd3e2b16cfca4a9efbc95758242e5030cbb33502440df4dbc15
|
4
|
+
data.tar.gz: e77ffff24d840adc1a17d162e58f76f99b363f063c070229315f45766d71a96a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46064d3008752765daec092f037dc3d3b2b85a6f2a9c9a9b6fe1b4abec1cc9764d7c157adc736844ccbdde68f78a7b303225da5fe6caa895f650a9102b2cf271
|
7
|
+
data.tar.gz: fadc40b635e868e0b59f61faa566447f294e4fc174b0620e06bac1766c4fb6c1ce0944548d413443bc699c128b7c59d9f5c6dc7175fb46c2f9c3d1404e698c8e
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
=== 2.24.0 (2022-05-24)
|
2
|
+
|
3
|
+
* Work around implicit null byte check added in bcrypt 3.1.18 by checking password requirements before other password checks (jeremyevans)
|
4
|
+
|
5
|
+
* Fix invalid HTML on pages with OTP QR codes (jeremyevans)
|
6
|
+
|
7
|
+
* Add recovery_codes_available? configuration method to the recovery_codes feature (janko) (#238)
|
8
|
+
|
9
|
+
* Add otp_available? configuration method to the otp feature (janko) (#238)
|
10
|
+
|
1
11
|
=== 2.23.0 (2022-04-22)
|
2
12
|
|
3
13
|
* Don't automatically set :httponly cookie option if :http_only option is set in remember feature (jeremyevans)
|
data/doc/otp.rdoc
CHANGED
@@ -70,6 +70,7 @@ before_otp_setup_route :: Run arbitrary code before handling an OTP authenticati
|
|
70
70
|
otp :: The object used for verifying OTP authentication attempts.
|
71
71
|
otp_add_key(secret) :: Add an OTP key for the current account with the given secret.
|
72
72
|
otp_auth_view :: The HTML to use for the OTP authentication form.
|
73
|
+
otp_available? :: Whether OTP authentication is ready for use.
|
73
74
|
otp_disable_view :: The HTML to use for the OTP disable form.
|
74
75
|
otp_exists? :: Whether the current account has setup OTP.
|
75
76
|
otp_key :: The stored OTP secret for the account.
|
data/doc/recovery_codes.rdoc
CHANGED
@@ -57,4 +57,5 @@ new_recovery_code :: A new recovery code to insert into the recovery codes table
|
|
57
57
|
recovery_auth_view :: The HTML to use for the form to authenticate via a recovery code.
|
58
58
|
recovery_code_match?(code) :: Whether the given code matches any of the existing recovery_codes.
|
59
59
|
recovery_codes :: An array containing all valid recovery codes for the current account.
|
60
|
+
recovery_codes_available? :: Whether authentication via recovery codes is ready for use.
|
60
61
|
recovery_codes_view :: The HTML to use for the form to view recovery codes.
|
@@ -0,0 +1,15 @@
|
|
1
|
+
= New Features
|
2
|
+
|
3
|
+
* rodauth.otp_available? has been added for checking whether the
|
4
|
+
account is allowed to authenticate with OTP. It returns true
|
5
|
+
when the account has setup OTP and OTP use is not locked out.
|
6
|
+
|
7
|
+
* rodauth.recovery_codes_available? has been added for checking
|
8
|
+
whether the account is allowed to authenticate using a recovery
|
9
|
+
code. It returns true when there are any available recovery
|
10
|
+
codes for the account to use.
|
11
|
+
|
12
|
+
= Other Improvements
|
13
|
+
|
14
|
+
* The otp feature no longer includes the <?xml> tag for svg images,
|
15
|
+
since that results in invalid HTML.
|
data/lib/rodauth/features/otp.rb
CHANGED
@@ -76,6 +76,7 @@ module Rodauth
|
|
76
76
|
)
|
77
77
|
|
78
78
|
auth_methods(
|
79
|
+
:otp_available?,
|
79
80
|
:otp_exists?,
|
80
81
|
:otp_last_use,
|
81
82
|
:otp_locked_out?,
|
@@ -238,6 +239,10 @@ module Rodauth
|
|
238
239
|
end
|
239
240
|
end
|
240
241
|
|
242
|
+
def otp_available?
|
243
|
+
otp_exists? && !otp_locked_out?
|
244
|
+
end
|
245
|
+
|
241
246
|
def otp_exists?
|
242
247
|
!otp_key.nil?
|
243
248
|
end
|
@@ -303,7 +308,8 @@ module Rodauth
|
|
303
308
|
end
|
304
309
|
|
305
310
|
def otp_qr_code
|
306
|
-
RQRCode::QRCode.new(otp_provisioning_uri).as_svg(:module_size=>8, :viewbox=>true, :use_path=>true)
|
311
|
+
svg = RQRCode::QRCode.new(otp_provisioning_uri).as_svg(:module_size=>8, :viewbox=>true, :use_path=>true)
|
312
|
+
svg.sub(/\A<\?xml version="1\.0" standalone="yes"\?>/, '')
|
307
313
|
end
|
308
314
|
|
309
315
|
def otp_user_key
|
@@ -328,7 +334,7 @@ module Rodauth
|
|
328
334
|
|
329
335
|
def _two_factor_auth_links
|
330
336
|
links = super
|
331
|
-
links << [20, otp_auth_path, otp_auth_link_text] if
|
337
|
+
links << [20, otp_auth_path, otp_auth_link_text] if otp_available?
|
332
338
|
links
|
333
339
|
end
|
334
340
|
|
@@ -57,6 +57,7 @@ module Rodauth
|
|
57
57
|
:can_add_recovery_codes?,
|
58
58
|
:new_recovery_code,
|
59
59
|
:recovery_code_match?,
|
60
|
+
:recovery_codes_available?,
|
60
61
|
)
|
61
62
|
|
62
63
|
internal_request_method :recovery_codes
|
@@ -192,6 +193,10 @@ module Rodauth
|
|
192
193
|
end
|
193
194
|
end
|
194
195
|
|
196
|
+
def recovery_codes_available?
|
197
|
+
!recovery_codes_ds.empty?
|
198
|
+
end
|
199
|
+
|
195
200
|
def possible_authentication_methods
|
196
201
|
methods = super
|
197
202
|
methods << 'recovery_code' unless recovery_codes_ds.empty?
|
@@ -202,7 +207,7 @@ module Rodauth
|
|
202
207
|
|
203
208
|
def _two_factor_auth_links
|
204
209
|
links = super
|
205
|
-
links << [40, recovery_auth_path, recovery_auth_link_text]
|
210
|
+
links << [40, recovery_auth_path, recovery_auth_link_text] if recovery_codes_available?
|
206
211
|
links
|
207
212
|
end
|
208
213
|
|
@@ -130,6 +130,10 @@ module Rodauth
|
|
130
130
|
|
131
131
|
password = param(password_param)
|
132
132
|
catch_error do
|
133
|
+
unless password_meets_requirements?(password)
|
134
|
+
throw_error_status(invalid_field_error_status, password_param, password_does_not_meet_requirements_message)
|
135
|
+
end
|
136
|
+
|
133
137
|
if password_match?(password)
|
134
138
|
throw_error_reason(:same_as_existing_password, invalid_field_error_status, password_param, same_as_existing_password_message)
|
135
139
|
end
|
@@ -138,10 +142,6 @@ module Rodauth
|
|
138
142
|
throw_error_reason(:passwords_do_not_match, unmatched_field_error_status, password_param, passwords_do_not_match_message)
|
139
143
|
end
|
140
144
|
|
141
|
-
unless password_meets_requirements?(password)
|
142
|
-
throw_error_status(invalid_field_error_status, password_param, password_does_not_meet_requirements_message)
|
143
|
-
end
|
144
|
-
|
145
145
|
transaction do
|
146
146
|
before_reset_password
|
147
147
|
set_password(password)
|
data/lib/rodauth/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rodauth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.24.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sequel
|
@@ -339,6 +339,7 @@ extra_rdoc_files:
|
|
339
339
|
- doc/release_notes/2.21.0.txt
|
340
340
|
- doc/release_notes/2.22.0.txt
|
341
341
|
- doc/release_notes/2.23.0.txt
|
342
|
+
- doc/release_notes/2.24.0.txt
|
342
343
|
- doc/release_notes/2.3.0.txt
|
343
344
|
- doc/release_notes/2.4.0.txt
|
344
345
|
- doc/release_notes/2.5.0.txt
|
@@ -449,6 +450,7 @@ files:
|
|
449
450
|
- doc/release_notes/2.21.0.txt
|
450
451
|
- doc/release_notes/2.22.0.txt
|
451
452
|
- doc/release_notes/2.23.0.txt
|
453
|
+
- doc/release_notes/2.24.0.txt
|
452
454
|
- doc/release_notes/2.3.0.txt
|
453
455
|
- doc/release_notes/2.4.0.txt
|
454
456
|
- doc/release_notes/2.5.0.txt
|
@@ -575,13 +577,13 @@ files:
|
|
575
577
|
- templates/webauthn-auth.str
|
576
578
|
- templates/webauthn-remove.str
|
577
579
|
- templates/webauthn-setup.str
|
578
|
-
homepage: https://
|
580
|
+
homepage: https://rodauth.jeremyevans.net
|
579
581
|
licenses:
|
580
582
|
- MIT
|
581
583
|
metadata:
|
582
584
|
bug_tracker_uri: https://github.com/jeremyevans/rodauth/issues
|
583
|
-
changelog_uri:
|
584
|
-
documentation_uri:
|
585
|
+
changelog_uri: https://rodauth.jeremyevans.net/rdoc/files/CHANGELOG.html
|
586
|
+
documentation_uri: https://rodauth.jeremyevans.net/documentation.html
|
585
587
|
mailing_list_uri: https://github.com/jeremyevans/rodauth/discussions
|
586
588
|
source_code_uri: https://github.com/jeremyevans/rodauth
|
587
589
|
post_install_message:
|