rodauth 2.36.0 → 2.37.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/lib/rodauth/features/base.rb +15 -1
- data/lib/rodauth/features/change_login.rb +2 -2
- data/lib/rodauth/features/create_account.rb +2 -2
- data/lib/rodauth/features/email_auth.rb +1 -1
- data/lib/rodauth/features/internal_request.rb +4 -4
- data/lib/rodauth/features/json.rb +5 -0
- data/lib/rodauth/features/jwt.rb +5 -9
- data/lib/rodauth/features/lockout.rb +1 -1
- data/lib/rodauth/features/login.rb +1 -1
- data/lib/rodauth/features/login_password_requirements_base.rb +13 -0
- data/lib/rodauth/features/reset_password.rb +1 -1
- data/lib/rodauth/features/two_factor_base.rb +6 -13
- data/lib/rodauth/features/verify_account.rb +2 -2
- data/lib/rodauth/features/webauthn_autofill.rb +2 -1
- data/lib/rodauth/features/webauthn_login.rb +1 -1
- data/lib/rodauth/version.rb +1 -1
- data/lib/rodauth.rb +6 -2
- metadata +3 -258
- data/CHANGELOG +0 -521
- data/README.rdoc +0 -1555
- data/doc/account_expiration.rdoc +0 -41
- data/doc/active_sessions.rdoc +0 -56
- data/doc/argon2.rdoc +0 -54
- data/doc/audit_logging.rdoc +0 -44
- data/doc/base.rdoc +0 -123
- data/doc/change_login.rdoc +0 -25
- data/doc/change_password.rdoc +0 -26
- data/doc/change_password_notify.rdoc +0 -14
- data/doc/close_account.rdoc +0 -26
- data/doc/confirm_password.rdoc +0 -32
- data/doc/create_account.rdoc +0 -27
- data/doc/disallow_common_passwords.rdoc +0 -17
- data/doc/disallow_password_reuse.rdoc +0 -30
- data/doc/email_auth.rdoc +0 -55
- data/doc/email_base.rdoc +0 -18
- data/doc/error_reasons.rdoc +0 -77
- data/doc/guides/admin_activation.rdoc +0 -46
- data/doc/guides/already_authenticated.rdoc +0 -10
- data/doc/guides/alternative_login.rdoc +0 -46
- data/doc/guides/change_table_and_column_names.rdoc +0 -19
- data/doc/guides/create_account_programmatically.rdoc +0 -38
- data/doc/guides/delay_password.rdoc +0 -25
- data/doc/guides/email_only.rdoc +0 -16
- data/doc/guides/i18n.rdoc +0 -29
- data/doc/guides/internals.rdoc +0 -233
- data/doc/guides/links.rdoc +0 -12
- data/doc/guides/login_return.rdoc +0 -37
- data/doc/guides/migrate_password_hash_algorithm.rdoc +0 -15
- data/doc/guides/password_column.rdoc +0 -25
- data/doc/guides/password_confirmation.rdoc +0 -37
- data/doc/guides/password_requirements.rdoc +0 -43
- data/doc/guides/paths.rdoc +0 -51
- data/doc/guides/query_params.rdoc +0 -9
- data/doc/guides/redirects.rdoc +0 -17
- data/doc/guides/registration_field.rdoc +0 -68
- data/doc/guides/render_confirmation.rdoc +0 -17
- data/doc/guides/require_mfa.rdoc +0 -30
- data/doc/guides/reset_password_autologin.rdoc +0 -21
- data/doc/guides/share_configuration.rdoc +0 -34
- data/doc/guides/status_column.rdoc +0 -28
- data/doc/guides/totp_or_recovery.rdoc +0 -16
- data/doc/http_basic_auth.rdoc +0 -18
- data/doc/internal_request.rdoc +0 -539
- data/doc/json.rdoc +0 -56
- data/doc/jwt.rdoc +0 -52
- data/doc/jwt_cors.rdoc +0 -22
- data/doc/jwt_refresh.rdoc +0 -58
- data/doc/lockout.rdoc +0 -73
- data/doc/login.rdoc +0 -39
- data/doc/login_password_requirements_base.rdoc +0 -44
- data/doc/logout.rdoc +0 -22
- data/doc/otp.rdoc +0 -93
- data/doc/otp_lockout_email.rdoc +0 -30
- data/doc/otp_modify_email.rdoc +0 -19
- data/doc/otp_unlock.rdoc +0 -58
- data/doc/password_complexity.rdoc +0 -34
- data/doc/password_expiration.rdoc +0 -38
- data/doc/password_grace_period.rdoc +0 -24
- data/doc/password_pepper.rdoc +0 -52
- data/doc/path_class_methods.rdoc +0 -10
- data/doc/recovery_codes.rdoc +0 -61
- data/doc/release_notes/1.0.0.txt +0 -443
- data/doc/release_notes/1.1.0.txt +0 -8
- data/doc/release_notes/1.10.0.txt +0 -80
- data/doc/release_notes/1.11.0.txt +0 -32
- data/doc/release_notes/1.12.0.txt +0 -61
- data/doc/release_notes/1.13.0.txt +0 -34
- data/doc/release_notes/1.14.0.txt +0 -19
- data/doc/release_notes/1.15.0.txt +0 -21
- data/doc/release_notes/1.16.0.txt +0 -31
- data/doc/release_notes/1.17.0.txt +0 -23
- data/doc/release_notes/1.18.0.txt +0 -26
- data/doc/release_notes/1.19.0.txt +0 -116
- data/doc/release_notes/1.2.0.txt +0 -18
- data/doc/release_notes/1.20.0.txt +0 -175
- data/doc/release_notes/1.21.0.txt +0 -12
- data/doc/release_notes/1.22.0.txt +0 -11
- data/doc/release_notes/1.23.0.txt +0 -32
- data/doc/release_notes/1.3.0.txt +0 -21
- data/doc/release_notes/1.4.0.txt +0 -11
- data/doc/release_notes/1.5.0.txt +0 -74
- data/doc/release_notes/1.6.0.txt +0 -37
- data/doc/release_notes/1.7.0.txt +0 -6
- data/doc/release_notes/1.8.0.txt +0 -14
- data/doc/release_notes/1.9.0.txt +0 -15
- data/doc/release_notes/2.0.0.txt +0 -361
- data/doc/release_notes/2.1.0.txt +0 -31
- data/doc/release_notes/2.10.0.txt +0 -47
- data/doc/release_notes/2.11.0.txt +0 -31
- data/doc/release_notes/2.12.0.txt +0 -17
- data/doc/release_notes/2.13.0.txt +0 -19
- data/doc/release_notes/2.14.0.txt +0 -17
- data/doc/release_notes/2.15.0.txt +0 -48
- data/doc/release_notes/2.16.0.txt +0 -20
- data/doc/release_notes/2.17.0.txt +0 -10
- data/doc/release_notes/2.18.0.txt +0 -27
- data/doc/release_notes/2.19.0.txt +0 -61
- data/doc/release_notes/2.2.0.txt +0 -39
- data/doc/release_notes/2.20.0.txt +0 -10
- data/doc/release_notes/2.21.0.txt +0 -28
- data/doc/release_notes/2.22.0.txt +0 -43
- data/doc/release_notes/2.23.0.txt +0 -15
- data/doc/release_notes/2.24.0.txt +0 -15
- data/doc/release_notes/2.25.0.txt +0 -8
- data/doc/release_notes/2.26.0.txt +0 -45
- data/doc/release_notes/2.27.0.txt +0 -35
- data/doc/release_notes/2.28.0.txt +0 -16
- data/doc/release_notes/2.29.0.txt +0 -27
- data/doc/release_notes/2.3.0.txt +0 -37
- data/doc/release_notes/2.30.0.txt +0 -15
- data/doc/release_notes/2.31.0.txt +0 -47
- data/doc/release_notes/2.32.0.txt +0 -65
- data/doc/release_notes/2.33.0.txt +0 -18
- data/doc/release_notes/2.34.0.txt +0 -36
- data/doc/release_notes/2.35.0.txt +0 -22
- data/doc/release_notes/2.36.0.txt +0 -35
- data/doc/release_notes/2.4.0.txt +0 -22
- data/doc/release_notes/2.5.0.txt +0 -20
- data/doc/release_notes/2.6.0.txt +0 -37
- data/doc/release_notes/2.7.0.txt +0 -33
- data/doc/release_notes/2.8.0.txt +0 -20
- data/doc/release_notes/2.9.0.txt +0 -21
- data/doc/remember.rdoc +0 -79
- data/doc/reset_password.rdoc +0 -66
- data/doc/reset_password_notify.rdoc +0 -17
- data/doc/session_expiration.rdoc +0 -28
- data/doc/single_session.rdoc +0 -37
- data/doc/sms_codes.rdoc +0 -138
- data/doc/two_factor_base.rdoc +0 -70
- data/doc/update_password_hash.rdoc +0 -7
- data/doc/verify_account.rdoc +0 -67
- data/doc/verify_account_grace_period.rdoc +0 -19
- data/doc/verify_login_change.rdoc +0 -59
- data/doc/webauthn.rdoc +0 -118
- data/doc/webauthn_autofill.rdoc +0 -19
- data/doc/webauthn_login.rdoc +0 -16
- data/doc/webauthn_modify_email.rdoc +0 -19
- data/doc/webauthn_verify_account.rdoc +0 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8c4f8a9edcebe8714dfa15132986c74e12e1823837ab71230008c42df9c2432d
|
|
4
|
+
data.tar.gz: f5cb984675323f2c2b83bd1d7be0626f511381b69e090c1d39bfb7b31d09321d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3cdaaafebe4a7dba8b985dd1fbf39087a95fb3a49150e67487024e9374c50da6eced618ef702bfb70fbc483f83f9c29dba873d07bac2b4c1ec442007f3556f61
|
|
7
|
+
data.tar.gz: 8774b5ae4c7e430f76705857bd0e80a59a0171c60b9693581ee7eae7c07a1c300b89c38c7d7f660cf01e48e6c2190597449eec4cadf57cd38c08cbe8a2783886
|
|
@@ -98,6 +98,7 @@ module Rodauth
|
|
|
98
98
|
:inputmode_for_field?,
|
|
99
99
|
:logged_in?,
|
|
100
100
|
:login_required,
|
|
101
|
+
:normalize_login,
|
|
101
102
|
:null_byte_parameter_value,
|
|
102
103
|
:open_account?,
|
|
103
104
|
:over_max_bytesize_param_value,
|
|
@@ -321,7 +322,7 @@ module Rodauth
|
|
|
321
322
|
end
|
|
322
323
|
|
|
323
324
|
def clear_session
|
|
324
|
-
if
|
|
325
|
+
if use_scope_clear_session?
|
|
325
326
|
scope.clear_session
|
|
326
327
|
else
|
|
327
328
|
session.clear
|
|
@@ -505,6 +506,15 @@ module Rodauth
|
|
|
505
506
|
nil
|
|
506
507
|
end
|
|
507
508
|
|
|
509
|
+
# The normalized value of the login parameter
|
|
510
|
+
def login_param_value
|
|
511
|
+
normalize_login(param(login_param))
|
|
512
|
+
end
|
|
513
|
+
|
|
514
|
+
def normalize_login(login)
|
|
515
|
+
login
|
|
516
|
+
end
|
|
517
|
+
|
|
508
518
|
# Return nil by default for values with null bytes
|
|
509
519
|
def null_byte_parameter_value(key, value)
|
|
510
520
|
nil
|
|
@@ -869,6 +879,10 @@ module Rodauth
|
|
|
869
879
|
false
|
|
870
880
|
end
|
|
871
881
|
|
|
882
|
+
def use_scope_clear_session?
|
|
883
|
+
scope.respond_to?(:clear_session)
|
|
884
|
+
end
|
|
885
|
+
|
|
872
886
|
def require_response(meth)
|
|
873
887
|
send(meth)
|
|
874
888
|
raise RuntimeError, "#{meth.to_s.sub(/\A_/, '')} overridden without returning a response (should use redirect or request.halt). This is a bug in your Rodauth configuration, not a bug in Rodauth itself."
|
|
@@ -36,12 +36,12 @@ module Rodauth
|
|
|
36
36
|
throw_error_reason(:invalid_password, invalid_password_error_status, password_param, invalid_password_message)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
login =
|
|
39
|
+
login = login_param_value
|
|
40
40
|
unless login_meets_requirements?(login)
|
|
41
41
|
throw_error_status(invalid_field_error_status, login_param, login_does_not_meet_requirements_message)
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
if require_login_confirmation? && login
|
|
44
|
+
if require_login_confirmation? && !login_confirmation_matches?(login, param(login_confirm_param))
|
|
45
45
|
throw_error_reason(:logins_do_not_match, unmatched_field_error_status, login_param, logins_do_not_match_message)
|
|
46
46
|
end
|
|
47
47
|
|
|
@@ -40,12 +40,12 @@ module Rodauth
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
r.post do
|
|
43
|
-
login =
|
|
43
|
+
login = login_param_value
|
|
44
44
|
password = param(password_param)
|
|
45
45
|
new_account(login)
|
|
46
46
|
|
|
47
47
|
catch_error do
|
|
48
|
-
if require_login_confirmation? && login
|
|
48
|
+
if require_login_confirmation? && !login_confirmation_matches?(login, param(login_confirm_param))
|
|
49
49
|
throw_error_reason(:logins_do_not_match, unmatched_field_error_status, login_param, logins_do_not_match_message)
|
|
50
50
|
end
|
|
51
51
|
|
|
@@ -223,14 +223,14 @@ module Rodauth
|
|
|
223
223
|
end
|
|
224
224
|
|
|
225
225
|
def _handle_account_id_for_login(_)
|
|
226
|
-
raise InternalRequestError, "no login provided" unless
|
|
227
|
-
raise InternalRequestError, "no account for login" unless account = account_from_login(
|
|
226
|
+
raise InternalRequestError, "no login provided" unless param_or_nil(login_param)
|
|
227
|
+
raise InternalRequestError, "no account for login" unless account = account_from_login(login_param_value)
|
|
228
228
|
_return_from_internal_request(account[account_id_column])
|
|
229
229
|
end
|
|
230
230
|
|
|
231
231
|
def _handle_account_exists?(_)
|
|
232
|
-
raise InternalRequestError, "no login provided" unless
|
|
233
|
-
_return_from_internal_request(!!account_from_login(
|
|
232
|
+
raise InternalRequestError, "no login provided" unless param_or_nil(login_param)
|
|
233
|
+
_return_from_internal_request(!!account_from_login(login_param_value))
|
|
234
234
|
end
|
|
235
235
|
|
|
236
236
|
def _handle_lock_account(_)
|
data/lib/rodauth/features/jwt.rb
CHANGED
|
@@ -60,10 +60,7 @@ module Rodauth
|
|
|
60
60
|
|
|
61
61
|
def clear_session
|
|
62
62
|
super
|
|
63
|
-
if use_jwt?
|
|
64
|
-
session.clear
|
|
65
|
-
set_jwt
|
|
66
|
-
end
|
|
63
|
+
set_jwt if use_jwt?
|
|
67
64
|
end
|
|
68
65
|
|
|
69
66
|
def jwt_secret
|
|
@@ -104,11 +101,6 @@ module Rodauth
|
|
|
104
101
|
|
|
105
102
|
private
|
|
106
103
|
|
|
107
|
-
def check_csrf?
|
|
108
|
-
return false if use_jwt?
|
|
109
|
-
super
|
|
110
|
-
end
|
|
111
|
-
|
|
112
104
|
def _jwt_decode_opts
|
|
113
105
|
jwt_decode_opts
|
|
114
106
|
end
|
|
@@ -158,5 +150,9 @@ module Rodauth
|
|
|
158
150
|
def set_jwt
|
|
159
151
|
set_jwt_token(session_jwt)
|
|
160
152
|
end
|
|
153
|
+
|
|
154
|
+
def use_scope_clear_session?
|
|
155
|
+
super && !use_jwt?
|
|
156
|
+
end
|
|
161
157
|
end
|
|
162
158
|
end
|
|
@@ -70,7 +70,7 @@ module Rodauth
|
|
|
70
70
|
before_unlock_account_request_route
|
|
71
71
|
|
|
72
72
|
r.post do
|
|
73
|
-
if account_from_login(
|
|
73
|
+
if account_from_login(login_param_value) && get_unlock_account_key
|
|
74
74
|
if unlock_account_email_recently_sent?
|
|
75
75
|
set_redirect_error_flash unlock_account_email_recently_sent_error_flash
|
|
76
76
|
redirect unlock_account_email_recently_sent_redirect
|
|
@@ -45,7 +45,7 @@ module Rodauth
|
|
|
45
45
|
view = :login_view
|
|
46
46
|
|
|
47
47
|
catch_error do
|
|
48
|
-
unless account_from_login(
|
|
48
|
+
unless account_from_login(login_param_value)
|
|
49
49
|
throw_error_reason(:no_matching_login, no_matching_login_error_status, login_param, no_matching_login_message)
|
|
50
50
|
end
|
|
51
51
|
|
|
@@ -36,6 +36,7 @@ module Rodauth
|
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
auth_methods(
|
|
39
|
+
:login_confirmation_matches?,
|
|
39
40
|
:login_meets_requirements?,
|
|
40
41
|
:login_valid_email?,
|
|
41
42
|
:password_hash,
|
|
@@ -126,6 +127,18 @@ module Rodauth
|
|
|
126
127
|
@login_requirement_message = message
|
|
127
128
|
end
|
|
128
129
|
|
|
130
|
+
if RUBY_VERSION >= '2.4'
|
|
131
|
+
def login_confirmation_matches?(login, login_confirmation)
|
|
132
|
+
login.casecmp?(login_confirmation)
|
|
133
|
+
end
|
|
134
|
+
# :nocov:
|
|
135
|
+
else
|
|
136
|
+
def login_confirmation_matches?(login, login_confirmation)
|
|
137
|
+
login.casecmp(login_confirmation) == 0
|
|
138
|
+
end
|
|
139
|
+
# :nocov:
|
|
140
|
+
end
|
|
141
|
+
|
|
129
142
|
def login_meets_length_requirements?(login)
|
|
130
143
|
if login_minimum_length > login.length
|
|
131
144
|
set_login_requirement_error_message(:login_too_short, login_too_short_message)
|
|
@@ -69,7 +69,7 @@ module Rodauth
|
|
|
69
69
|
|
|
70
70
|
r.post do
|
|
71
71
|
catch_error do
|
|
72
|
-
unless account_from_login(
|
|
72
|
+
unless account_from_login(login_param_value)
|
|
73
73
|
throw_error_reason(:no_matching_login, no_matching_login_error_status, login_param, no_matching_login_message)
|
|
74
74
|
end
|
|
75
75
|
|
|
@@ -124,23 +124,12 @@ module Rodauth
|
|
|
124
124
|
end
|
|
125
125
|
|
|
126
126
|
def authenticated?
|
|
127
|
-
|
|
128
|
-
return false unless super
|
|
129
|
-
|
|
130
|
-
# True if already authenticated via 2nd factor
|
|
131
|
-
return true if two_factor_authenticated?
|
|
132
|
-
|
|
133
|
-
# True if authenticated via single factor and 2nd factor not setup
|
|
134
|
-
!uses_two_factor_authentication?
|
|
127
|
+
super && !two_factor_partially_authenticated?
|
|
135
128
|
end
|
|
136
129
|
|
|
137
130
|
def require_authentication
|
|
138
131
|
super
|
|
139
|
-
|
|
140
|
-
# Avoid database query if already authenticated via 2nd factor
|
|
141
|
-
return if two_factor_authenticated?
|
|
142
|
-
|
|
143
|
-
require_two_factor_authenticated if uses_two_factor_authentication?
|
|
132
|
+
require_two_factor_authenticated if two_factor_partially_authenticated?
|
|
144
133
|
end
|
|
145
134
|
|
|
146
135
|
def require_two_factor_setup
|
|
@@ -188,6 +177,10 @@ module Rodauth
|
|
|
188
177
|
end
|
|
189
178
|
end
|
|
190
179
|
|
|
180
|
+
def two_factor_partially_authenticated?
|
|
181
|
+
logged_in? && !two_factor_authenticated? && uses_two_factor_authentication?
|
|
182
|
+
end
|
|
183
|
+
|
|
191
184
|
def two_factor_authenticated?
|
|
192
185
|
authenticated_by && authenticated_by.length >= 2
|
|
193
186
|
end
|
|
@@ -71,7 +71,7 @@ module Rodauth
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
r.post do
|
|
74
|
-
if account_from_login(
|
|
74
|
+
if account_from_login(login_param_value) && allow_resending_verify_account_email?
|
|
75
75
|
if verify_account_email_recently_sent?
|
|
76
76
|
set_redirect_error_flash verify_account_email_recently_sent_error_flash
|
|
77
77
|
redirect verify_account_email_recently_sent_redirect
|
|
@@ -244,7 +244,7 @@ module Rodauth
|
|
|
244
244
|
|
|
245
245
|
def _login_form_footer_links
|
|
246
246
|
links = super
|
|
247
|
-
if !param_or_nil(login_param) || ((account || account_from_login(
|
|
247
|
+
if !param_or_nil(login_param) || ((account || account_from_login(login_param_value)) && allow_resending_verify_account_email?)
|
|
248
248
|
links << [30, verify_account_resend_path, verify_account_resend_link_text]
|
|
249
249
|
end
|
|
250
250
|
links
|
|
@@ -4,6 +4,7 @@ module Rodauth
|
|
|
4
4
|
Feature.define(:webauthn_autofill, :WebauthnAutofill) do
|
|
5
5
|
depends :webauthn_login
|
|
6
6
|
|
|
7
|
+
auth_value_method :webauthn_autofill?, true
|
|
7
8
|
auth_value_method :webauthn_autofill_js, File.binread(File.expand_path('../../../../javascript/webauthn_autofill.js', __FILE__)).freeze
|
|
8
9
|
|
|
9
10
|
translatable_method :webauthn_invalid_webauthn_id_message, "no webauthn key with given id found"
|
|
@@ -37,7 +38,7 @@ module Rodauth
|
|
|
37
38
|
|
|
38
39
|
def _login_form_footer
|
|
39
40
|
footer = super
|
|
40
|
-
footer += render("webauthn-autofill")
|
|
41
|
+
footer += render("webauthn-autofill") if webauthn_autofill? && !valid_login_entered?
|
|
41
42
|
footer
|
|
42
43
|
end
|
|
43
44
|
|
data/lib/rodauth/version.rb
CHANGED
data/lib/rodauth.rb
CHANGED
|
@@ -402,7 +402,11 @@ module Rodauth
|
|
|
402
402
|
end
|
|
403
403
|
|
|
404
404
|
module InstanceMethods
|
|
405
|
-
def
|
|
405
|
+
def default_rodauth_name
|
|
406
|
+
nil
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
def rodauth(name=default_rodauth_name)
|
|
406
410
|
if name
|
|
407
411
|
(@_rodauths ||= {})[name] ||= self.class.rodauth(name).new(self)
|
|
408
412
|
else
|
|
@@ -440,7 +444,7 @@ module Rodauth
|
|
|
440
444
|
end
|
|
441
445
|
|
|
442
446
|
module RequestMethods
|
|
443
|
-
def rodauth(name=
|
|
447
|
+
def rodauth(name=scope.default_rodauth_name)
|
|
444
448
|
scope.rodauth(name).route!
|
|
445
449
|
end
|
|
446
450
|
end
|
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.37.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: 2024-
|
|
11
|
+
date: 2024-11-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: sequel
|
|
@@ -248,265 +248,10 @@ email: code@jeremyevans.net
|
|
|
248
248
|
executables: []
|
|
249
249
|
extensions: []
|
|
250
250
|
extra_rdoc_files:
|
|
251
|
-
- README.rdoc
|
|
252
|
-
- CHANGELOG
|
|
253
251
|
- MIT-LICENSE
|
|
254
|
-
- doc/account_expiration.rdoc
|
|
255
|
-
- doc/active_sessions.rdoc
|
|
256
|
-
- doc/argon2.rdoc
|
|
257
|
-
- doc/audit_logging.rdoc
|
|
258
|
-
- doc/base.rdoc
|
|
259
|
-
- doc/change_login.rdoc
|
|
260
|
-
- doc/change_password.rdoc
|
|
261
|
-
- doc/change_password_notify.rdoc
|
|
262
|
-
- doc/close_account.rdoc
|
|
263
|
-
- doc/confirm_password.rdoc
|
|
264
|
-
- doc/create_account.rdoc
|
|
265
|
-
- doc/disallow_common_passwords.rdoc
|
|
266
|
-
- doc/disallow_password_reuse.rdoc
|
|
267
|
-
- doc/email_auth.rdoc
|
|
268
|
-
- doc/email_base.rdoc
|
|
269
|
-
- doc/error_reasons.rdoc
|
|
270
|
-
- doc/http_basic_auth.rdoc
|
|
271
|
-
- doc/internal_request.rdoc
|
|
272
|
-
- doc/json.rdoc
|
|
273
|
-
- doc/jwt.rdoc
|
|
274
|
-
- doc/jwt_cors.rdoc
|
|
275
|
-
- doc/jwt_refresh.rdoc
|
|
276
|
-
- doc/lockout.rdoc
|
|
277
|
-
- doc/login.rdoc
|
|
278
|
-
- doc/login_password_requirements_base.rdoc
|
|
279
|
-
- doc/logout.rdoc
|
|
280
|
-
- doc/otp.rdoc
|
|
281
|
-
- doc/otp_lockout_email.rdoc
|
|
282
|
-
- doc/otp_modify_email.rdoc
|
|
283
|
-
- doc/otp_unlock.rdoc
|
|
284
|
-
- doc/password_complexity.rdoc
|
|
285
|
-
- doc/password_expiration.rdoc
|
|
286
|
-
- doc/password_grace_period.rdoc
|
|
287
|
-
- doc/password_pepper.rdoc
|
|
288
|
-
- doc/path_class_methods.rdoc
|
|
289
|
-
- doc/recovery_codes.rdoc
|
|
290
|
-
- doc/remember.rdoc
|
|
291
|
-
- doc/reset_password.rdoc
|
|
292
|
-
- doc/reset_password_notify.rdoc
|
|
293
|
-
- doc/session_expiration.rdoc
|
|
294
|
-
- doc/single_session.rdoc
|
|
295
|
-
- doc/sms_codes.rdoc
|
|
296
|
-
- doc/two_factor_base.rdoc
|
|
297
|
-
- doc/update_password_hash.rdoc
|
|
298
|
-
- doc/verify_account.rdoc
|
|
299
|
-
- doc/verify_account_grace_period.rdoc
|
|
300
|
-
- doc/verify_login_change.rdoc
|
|
301
|
-
- doc/webauthn.rdoc
|
|
302
|
-
- doc/webauthn_autofill.rdoc
|
|
303
|
-
- doc/webauthn_login.rdoc
|
|
304
|
-
- doc/webauthn_modify_email.rdoc
|
|
305
|
-
- doc/webauthn_verify_account.rdoc
|
|
306
|
-
- doc/release_notes/1.0.0.txt
|
|
307
|
-
- doc/release_notes/1.1.0.txt
|
|
308
|
-
- doc/release_notes/1.10.0.txt
|
|
309
|
-
- doc/release_notes/1.11.0.txt
|
|
310
|
-
- doc/release_notes/1.12.0.txt
|
|
311
|
-
- doc/release_notes/1.13.0.txt
|
|
312
|
-
- doc/release_notes/1.14.0.txt
|
|
313
|
-
- doc/release_notes/1.15.0.txt
|
|
314
|
-
- doc/release_notes/1.16.0.txt
|
|
315
|
-
- doc/release_notes/1.17.0.txt
|
|
316
|
-
- doc/release_notes/1.18.0.txt
|
|
317
|
-
- doc/release_notes/1.19.0.txt
|
|
318
|
-
- doc/release_notes/1.2.0.txt
|
|
319
|
-
- doc/release_notes/1.20.0.txt
|
|
320
|
-
- doc/release_notes/1.21.0.txt
|
|
321
|
-
- doc/release_notes/1.22.0.txt
|
|
322
|
-
- doc/release_notes/1.23.0.txt
|
|
323
|
-
- doc/release_notes/1.3.0.txt
|
|
324
|
-
- doc/release_notes/1.4.0.txt
|
|
325
|
-
- doc/release_notes/1.5.0.txt
|
|
326
|
-
- doc/release_notes/1.6.0.txt
|
|
327
|
-
- doc/release_notes/1.7.0.txt
|
|
328
|
-
- doc/release_notes/1.8.0.txt
|
|
329
|
-
- doc/release_notes/1.9.0.txt
|
|
330
|
-
- doc/release_notes/2.0.0.txt
|
|
331
|
-
- doc/release_notes/2.1.0.txt
|
|
332
|
-
- doc/release_notes/2.10.0.txt
|
|
333
|
-
- doc/release_notes/2.11.0.txt
|
|
334
|
-
- doc/release_notes/2.12.0.txt
|
|
335
|
-
- doc/release_notes/2.13.0.txt
|
|
336
|
-
- doc/release_notes/2.14.0.txt
|
|
337
|
-
- doc/release_notes/2.15.0.txt
|
|
338
|
-
- doc/release_notes/2.16.0.txt
|
|
339
|
-
- doc/release_notes/2.17.0.txt
|
|
340
|
-
- doc/release_notes/2.18.0.txt
|
|
341
|
-
- doc/release_notes/2.19.0.txt
|
|
342
|
-
- doc/release_notes/2.2.0.txt
|
|
343
|
-
- doc/release_notes/2.20.0.txt
|
|
344
|
-
- doc/release_notes/2.21.0.txt
|
|
345
|
-
- doc/release_notes/2.22.0.txt
|
|
346
|
-
- doc/release_notes/2.23.0.txt
|
|
347
|
-
- doc/release_notes/2.24.0.txt
|
|
348
|
-
- doc/release_notes/2.25.0.txt
|
|
349
|
-
- doc/release_notes/2.26.0.txt
|
|
350
|
-
- doc/release_notes/2.27.0.txt
|
|
351
|
-
- doc/release_notes/2.28.0.txt
|
|
352
|
-
- doc/release_notes/2.29.0.txt
|
|
353
|
-
- doc/release_notes/2.3.0.txt
|
|
354
|
-
- doc/release_notes/2.30.0.txt
|
|
355
|
-
- doc/release_notes/2.31.0.txt
|
|
356
|
-
- doc/release_notes/2.32.0.txt
|
|
357
|
-
- doc/release_notes/2.33.0.txt
|
|
358
|
-
- doc/release_notes/2.34.0.txt
|
|
359
|
-
- doc/release_notes/2.35.0.txt
|
|
360
|
-
- doc/release_notes/2.36.0.txt
|
|
361
|
-
- doc/release_notes/2.4.0.txt
|
|
362
|
-
- doc/release_notes/2.5.0.txt
|
|
363
|
-
- doc/release_notes/2.6.0.txt
|
|
364
|
-
- doc/release_notes/2.7.0.txt
|
|
365
|
-
- doc/release_notes/2.8.0.txt
|
|
366
|
-
- doc/release_notes/2.9.0.txt
|
|
367
252
|
files:
|
|
368
|
-
- CHANGELOG
|
|
369
253
|
- MIT-LICENSE
|
|
370
|
-
- README.rdoc
|
|
371
254
|
- dict/top-10_000-passwords.txt
|
|
372
|
-
- doc/account_expiration.rdoc
|
|
373
|
-
- doc/active_sessions.rdoc
|
|
374
|
-
- doc/argon2.rdoc
|
|
375
|
-
- doc/audit_logging.rdoc
|
|
376
|
-
- doc/base.rdoc
|
|
377
|
-
- doc/change_login.rdoc
|
|
378
|
-
- doc/change_password.rdoc
|
|
379
|
-
- doc/change_password_notify.rdoc
|
|
380
|
-
- doc/close_account.rdoc
|
|
381
|
-
- doc/confirm_password.rdoc
|
|
382
|
-
- doc/create_account.rdoc
|
|
383
|
-
- doc/disallow_common_passwords.rdoc
|
|
384
|
-
- doc/disallow_password_reuse.rdoc
|
|
385
|
-
- doc/email_auth.rdoc
|
|
386
|
-
- doc/email_base.rdoc
|
|
387
|
-
- doc/error_reasons.rdoc
|
|
388
|
-
- doc/guides/admin_activation.rdoc
|
|
389
|
-
- doc/guides/already_authenticated.rdoc
|
|
390
|
-
- doc/guides/alternative_login.rdoc
|
|
391
|
-
- doc/guides/change_table_and_column_names.rdoc
|
|
392
|
-
- doc/guides/create_account_programmatically.rdoc
|
|
393
|
-
- doc/guides/delay_password.rdoc
|
|
394
|
-
- doc/guides/email_only.rdoc
|
|
395
|
-
- doc/guides/i18n.rdoc
|
|
396
|
-
- doc/guides/internals.rdoc
|
|
397
|
-
- doc/guides/links.rdoc
|
|
398
|
-
- doc/guides/login_return.rdoc
|
|
399
|
-
- doc/guides/migrate_password_hash_algorithm.rdoc
|
|
400
|
-
- doc/guides/password_column.rdoc
|
|
401
|
-
- doc/guides/password_confirmation.rdoc
|
|
402
|
-
- doc/guides/password_requirements.rdoc
|
|
403
|
-
- doc/guides/paths.rdoc
|
|
404
|
-
- doc/guides/query_params.rdoc
|
|
405
|
-
- doc/guides/redirects.rdoc
|
|
406
|
-
- doc/guides/registration_field.rdoc
|
|
407
|
-
- doc/guides/render_confirmation.rdoc
|
|
408
|
-
- doc/guides/require_mfa.rdoc
|
|
409
|
-
- doc/guides/reset_password_autologin.rdoc
|
|
410
|
-
- doc/guides/share_configuration.rdoc
|
|
411
|
-
- doc/guides/status_column.rdoc
|
|
412
|
-
- doc/guides/totp_or_recovery.rdoc
|
|
413
|
-
- doc/http_basic_auth.rdoc
|
|
414
|
-
- doc/internal_request.rdoc
|
|
415
|
-
- doc/json.rdoc
|
|
416
|
-
- doc/jwt.rdoc
|
|
417
|
-
- doc/jwt_cors.rdoc
|
|
418
|
-
- doc/jwt_refresh.rdoc
|
|
419
|
-
- doc/lockout.rdoc
|
|
420
|
-
- doc/login.rdoc
|
|
421
|
-
- doc/login_password_requirements_base.rdoc
|
|
422
|
-
- doc/logout.rdoc
|
|
423
|
-
- doc/otp.rdoc
|
|
424
|
-
- doc/otp_lockout_email.rdoc
|
|
425
|
-
- doc/otp_modify_email.rdoc
|
|
426
|
-
- doc/otp_unlock.rdoc
|
|
427
|
-
- doc/password_complexity.rdoc
|
|
428
|
-
- doc/password_expiration.rdoc
|
|
429
|
-
- doc/password_grace_period.rdoc
|
|
430
|
-
- doc/password_pepper.rdoc
|
|
431
|
-
- doc/path_class_methods.rdoc
|
|
432
|
-
- doc/recovery_codes.rdoc
|
|
433
|
-
- doc/release_notes/1.0.0.txt
|
|
434
|
-
- doc/release_notes/1.1.0.txt
|
|
435
|
-
- doc/release_notes/1.10.0.txt
|
|
436
|
-
- doc/release_notes/1.11.0.txt
|
|
437
|
-
- doc/release_notes/1.12.0.txt
|
|
438
|
-
- doc/release_notes/1.13.0.txt
|
|
439
|
-
- doc/release_notes/1.14.0.txt
|
|
440
|
-
- doc/release_notes/1.15.0.txt
|
|
441
|
-
- doc/release_notes/1.16.0.txt
|
|
442
|
-
- doc/release_notes/1.17.0.txt
|
|
443
|
-
- doc/release_notes/1.18.0.txt
|
|
444
|
-
- doc/release_notes/1.19.0.txt
|
|
445
|
-
- doc/release_notes/1.2.0.txt
|
|
446
|
-
- doc/release_notes/1.20.0.txt
|
|
447
|
-
- doc/release_notes/1.21.0.txt
|
|
448
|
-
- doc/release_notes/1.22.0.txt
|
|
449
|
-
- doc/release_notes/1.23.0.txt
|
|
450
|
-
- doc/release_notes/1.3.0.txt
|
|
451
|
-
- doc/release_notes/1.4.0.txt
|
|
452
|
-
- doc/release_notes/1.5.0.txt
|
|
453
|
-
- doc/release_notes/1.6.0.txt
|
|
454
|
-
- doc/release_notes/1.7.0.txt
|
|
455
|
-
- doc/release_notes/1.8.0.txt
|
|
456
|
-
- doc/release_notes/1.9.0.txt
|
|
457
|
-
- doc/release_notes/2.0.0.txt
|
|
458
|
-
- doc/release_notes/2.1.0.txt
|
|
459
|
-
- doc/release_notes/2.10.0.txt
|
|
460
|
-
- doc/release_notes/2.11.0.txt
|
|
461
|
-
- doc/release_notes/2.12.0.txt
|
|
462
|
-
- doc/release_notes/2.13.0.txt
|
|
463
|
-
- doc/release_notes/2.14.0.txt
|
|
464
|
-
- doc/release_notes/2.15.0.txt
|
|
465
|
-
- doc/release_notes/2.16.0.txt
|
|
466
|
-
- doc/release_notes/2.17.0.txt
|
|
467
|
-
- doc/release_notes/2.18.0.txt
|
|
468
|
-
- doc/release_notes/2.19.0.txt
|
|
469
|
-
- doc/release_notes/2.2.0.txt
|
|
470
|
-
- doc/release_notes/2.20.0.txt
|
|
471
|
-
- doc/release_notes/2.21.0.txt
|
|
472
|
-
- doc/release_notes/2.22.0.txt
|
|
473
|
-
- doc/release_notes/2.23.0.txt
|
|
474
|
-
- doc/release_notes/2.24.0.txt
|
|
475
|
-
- doc/release_notes/2.25.0.txt
|
|
476
|
-
- doc/release_notes/2.26.0.txt
|
|
477
|
-
- doc/release_notes/2.27.0.txt
|
|
478
|
-
- doc/release_notes/2.28.0.txt
|
|
479
|
-
- doc/release_notes/2.29.0.txt
|
|
480
|
-
- doc/release_notes/2.3.0.txt
|
|
481
|
-
- doc/release_notes/2.30.0.txt
|
|
482
|
-
- doc/release_notes/2.31.0.txt
|
|
483
|
-
- doc/release_notes/2.32.0.txt
|
|
484
|
-
- doc/release_notes/2.33.0.txt
|
|
485
|
-
- doc/release_notes/2.34.0.txt
|
|
486
|
-
- doc/release_notes/2.35.0.txt
|
|
487
|
-
- doc/release_notes/2.36.0.txt
|
|
488
|
-
- doc/release_notes/2.4.0.txt
|
|
489
|
-
- doc/release_notes/2.5.0.txt
|
|
490
|
-
- doc/release_notes/2.6.0.txt
|
|
491
|
-
- doc/release_notes/2.7.0.txt
|
|
492
|
-
- doc/release_notes/2.8.0.txt
|
|
493
|
-
- doc/release_notes/2.9.0.txt
|
|
494
|
-
- doc/remember.rdoc
|
|
495
|
-
- doc/reset_password.rdoc
|
|
496
|
-
- doc/reset_password_notify.rdoc
|
|
497
|
-
- doc/session_expiration.rdoc
|
|
498
|
-
- doc/single_session.rdoc
|
|
499
|
-
- doc/sms_codes.rdoc
|
|
500
|
-
- doc/two_factor_base.rdoc
|
|
501
|
-
- doc/update_password_hash.rdoc
|
|
502
|
-
- doc/verify_account.rdoc
|
|
503
|
-
- doc/verify_account_grace_period.rdoc
|
|
504
|
-
- doc/verify_login_change.rdoc
|
|
505
|
-
- doc/webauthn.rdoc
|
|
506
|
-
- doc/webauthn_autofill.rdoc
|
|
507
|
-
- doc/webauthn_login.rdoc
|
|
508
|
-
- doc/webauthn_modify_email.rdoc
|
|
509
|
-
- doc/webauthn_verify_account.rdoc
|
|
510
255
|
- javascript/webauthn_auth.js
|
|
511
256
|
- javascript/webauthn_autofill.js
|
|
512
257
|
- javascript/webauthn_setup.js
|
|
@@ -659,7 +404,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
659
404
|
- !ruby/object:Gem::Version
|
|
660
405
|
version: '0'
|
|
661
406
|
requirements: []
|
|
662
|
-
rubygems_version: 3.5.
|
|
407
|
+
rubygems_version: 3.5.22
|
|
663
408
|
signing_key:
|
|
664
409
|
specification_version: 4
|
|
665
410
|
summary: Authentication and Account Management Framework for Rack Applications
|