rodauth 2.36.0 → 2.37.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rodauth/features/base.rb +15 -1
  3. data/lib/rodauth/features/change_login.rb +2 -2
  4. data/lib/rodauth/features/create_account.rb +2 -2
  5. data/lib/rodauth/features/email_auth.rb +1 -1
  6. data/lib/rodauth/features/internal_request.rb +4 -4
  7. data/lib/rodauth/features/json.rb +5 -0
  8. data/lib/rodauth/features/jwt.rb +5 -9
  9. data/lib/rodauth/features/lockout.rb +1 -1
  10. data/lib/rodauth/features/login.rb +1 -1
  11. data/lib/rodauth/features/login_password_requirements_base.rb +13 -0
  12. data/lib/rodauth/features/reset_password.rb +1 -1
  13. data/lib/rodauth/features/two_factor_base.rb +6 -13
  14. data/lib/rodauth/features/verify_account.rb +2 -2
  15. data/lib/rodauth/features/webauthn_autofill.rb +2 -1
  16. data/lib/rodauth/features/webauthn_login.rb +1 -1
  17. data/lib/rodauth/version.rb +1 -1
  18. data/lib/rodauth.rb +6 -2
  19. metadata +3 -258
  20. data/CHANGELOG +0 -521
  21. data/README.rdoc +0 -1555
  22. data/doc/account_expiration.rdoc +0 -41
  23. data/doc/active_sessions.rdoc +0 -56
  24. data/doc/argon2.rdoc +0 -54
  25. data/doc/audit_logging.rdoc +0 -44
  26. data/doc/base.rdoc +0 -123
  27. data/doc/change_login.rdoc +0 -25
  28. data/doc/change_password.rdoc +0 -26
  29. data/doc/change_password_notify.rdoc +0 -14
  30. data/doc/close_account.rdoc +0 -26
  31. data/doc/confirm_password.rdoc +0 -32
  32. data/doc/create_account.rdoc +0 -27
  33. data/doc/disallow_common_passwords.rdoc +0 -17
  34. data/doc/disallow_password_reuse.rdoc +0 -30
  35. data/doc/email_auth.rdoc +0 -55
  36. data/doc/email_base.rdoc +0 -18
  37. data/doc/error_reasons.rdoc +0 -77
  38. data/doc/guides/admin_activation.rdoc +0 -46
  39. data/doc/guides/already_authenticated.rdoc +0 -10
  40. data/doc/guides/alternative_login.rdoc +0 -46
  41. data/doc/guides/change_table_and_column_names.rdoc +0 -19
  42. data/doc/guides/create_account_programmatically.rdoc +0 -38
  43. data/doc/guides/delay_password.rdoc +0 -25
  44. data/doc/guides/email_only.rdoc +0 -16
  45. data/doc/guides/i18n.rdoc +0 -29
  46. data/doc/guides/internals.rdoc +0 -233
  47. data/doc/guides/links.rdoc +0 -12
  48. data/doc/guides/login_return.rdoc +0 -37
  49. data/doc/guides/migrate_password_hash_algorithm.rdoc +0 -15
  50. data/doc/guides/password_column.rdoc +0 -25
  51. data/doc/guides/password_confirmation.rdoc +0 -37
  52. data/doc/guides/password_requirements.rdoc +0 -43
  53. data/doc/guides/paths.rdoc +0 -51
  54. data/doc/guides/query_params.rdoc +0 -9
  55. data/doc/guides/redirects.rdoc +0 -17
  56. data/doc/guides/registration_field.rdoc +0 -68
  57. data/doc/guides/render_confirmation.rdoc +0 -17
  58. data/doc/guides/require_mfa.rdoc +0 -30
  59. data/doc/guides/reset_password_autologin.rdoc +0 -21
  60. data/doc/guides/share_configuration.rdoc +0 -34
  61. data/doc/guides/status_column.rdoc +0 -28
  62. data/doc/guides/totp_or_recovery.rdoc +0 -16
  63. data/doc/http_basic_auth.rdoc +0 -18
  64. data/doc/internal_request.rdoc +0 -539
  65. data/doc/json.rdoc +0 -56
  66. data/doc/jwt.rdoc +0 -52
  67. data/doc/jwt_cors.rdoc +0 -22
  68. data/doc/jwt_refresh.rdoc +0 -58
  69. data/doc/lockout.rdoc +0 -73
  70. data/doc/login.rdoc +0 -39
  71. data/doc/login_password_requirements_base.rdoc +0 -44
  72. data/doc/logout.rdoc +0 -22
  73. data/doc/otp.rdoc +0 -93
  74. data/doc/otp_lockout_email.rdoc +0 -30
  75. data/doc/otp_modify_email.rdoc +0 -19
  76. data/doc/otp_unlock.rdoc +0 -58
  77. data/doc/password_complexity.rdoc +0 -34
  78. data/doc/password_expiration.rdoc +0 -38
  79. data/doc/password_grace_period.rdoc +0 -24
  80. data/doc/password_pepper.rdoc +0 -52
  81. data/doc/path_class_methods.rdoc +0 -10
  82. data/doc/recovery_codes.rdoc +0 -61
  83. data/doc/release_notes/1.0.0.txt +0 -443
  84. data/doc/release_notes/1.1.0.txt +0 -8
  85. data/doc/release_notes/1.10.0.txt +0 -80
  86. data/doc/release_notes/1.11.0.txt +0 -32
  87. data/doc/release_notes/1.12.0.txt +0 -61
  88. data/doc/release_notes/1.13.0.txt +0 -34
  89. data/doc/release_notes/1.14.0.txt +0 -19
  90. data/doc/release_notes/1.15.0.txt +0 -21
  91. data/doc/release_notes/1.16.0.txt +0 -31
  92. data/doc/release_notes/1.17.0.txt +0 -23
  93. data/doc/release_notes/1.18.0.txt +0 -26
  94. data/doc/release_notes/1.19.0.txt +0 -116
  95. data/doc/release_notes/1.2.0.txt +0 -18
  96. data/doc/release_notes/1.20.0.txt +0 -175
  97. data/doc/release_notes/1.21.0.txt +0 -12
  98. data/doc/release_notes/1.22.0.txt +0 -11
  99. data/doc/release_notes/1.23.0.txt +0 -32
  100. data/doc/release_notes/1.3.0.txt +0 -21
  101. data/doc/release_notes/1.4.0.txt +0 -11
  102. data/doc/release_notes/1.5.0.txt +0 -74
  103. data/doc/release_notes/1.6.0.txt +0 -37
  104. data/doc/release_notes/1.7.0.txt +0 -6
  105. data/doc/release_notes/1.8.0.txt +0 -14
  106. data/doc/release_notes/1.9.0.txt +0 -15
  107. data/doc/release_notes/2.0.0.txt +0 -361
  108. data/doc/release_notes/2.1.0.txt +0 -31
  109. data/doc/release_notes/2.10.0.txt +0 -47
  110. data/doc/release_notes/2.11.0.txt +0 -31
  111. data/doc/release_notes/2.12.0.txt +0 -17
  112. data/doc/release_notes/2.13.0.txt +0 -19
  113. data/doc/release_notes/2.14.0.txt +0 -17
  114. data/doc/release_notes/2.15.0.txt +0 -48
  115. data/doc/release_notes/2.16.0.txt +0 -20
  116. data/doc/release_notes/2.17.0.txt +0 -10
  117. data/doc/release_notes/2.18.0.txt +0 -27
  118. data/doc/release_notes/2.19.0.txt +0 -61
  119. data/doc/release_notes/2.2.0.txt +0 -39
  120. data/doc/release_notes/2.20.0.txt +0 -10
  121. data/doc/release_notes/2.21.0.txt +0 -28
  122. data/doc/release_notes/2.22.0.txt +0 -43
  123. data/doc/release_notes/2.23.0.txt +0 -15
  124. data/doc/release_notes/2.24.0.txt +0 -15
  125. data/doc/release_notes/2.25.0.txt +0 -8
  126. data/doc/release_notes/2.26.0.txt +0 -45
  127. data/doc/release_notes/2.27.0.txt +0 -35
  128. data/doc/release_notes/2.28.0.txt +0 -16
  129. data/doc/release_notes/2.29.0.txt +0 -27
  130. data/doc/release_notes/2.3.0.txt +0 -37
  131. data/doc/release_notes/2.30.0.txt +0 -15
  132. data/doc/release_notes/2.31.0.txt +0 -47
  133. data/doc/release_notes/2.32.0.txt +0 -65
  134. data/doc/release_notes/2.33.0.txt +0 -18
  135. data/doc/release_notes/2.34.0.txt +0 -36
  136. data/doc/release_notes/2.35.0.txt +0 -22
  137. data/doc/release_notes/2.36.0.txt +0 -35
  138. data/doc/release_notes/2.4.0.txt +0 -22
  139. data/doc/release_notes/2.5.0.txt +0 -20
  140. data/doc/release_notes/2.6.0.txt +0 -37
  141. data/doc/release_notes/2.7.0.txt +0 -33
  142. data/doc/release_notes/2.8.0.txt +0 -20
  143. data/doc/release_notes/2.9.0.txt +0 -21
  144. data/doc/remember.rdoc +0 -79
  145. data/doc/reset_password.rdoc +0 -66
  146. data/doc/reset_password_notify.rdoc +0 -17
  147. data/doc/session_expiration.rdoc +0 -28
  148. data/doc/single_session.rdoc +0 -37
  149. data/doc/sms_codes.rdoc +0 -138
  150. data/doc/two_factor_base.rdoc +0 -70
  151. data/doc/update_password_hash.rdoc +0 -7
  152. data/doc/verify_account.rdoc +0 -67
  153. data/doc/verify_account_grace_period.rdoc +0 -19
  154. data/doc/verify_login_change.rdoc +0 -59
  155. data/doc/webauthn.rdoc +0 -118
  156. data/doc/webauthn_autofill.rdoc +0 -19
  157. data/doc/webauthn_login.rdoc +0 -16
  158. data/doc/webauthn_modify_email.rdoc +0 -19
  159. data/doc/webauthn_verify_account.rdoc +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4daf43beb9b2af129683b299f1e455e5b38fa925b1cc020ec79ae951f56f292b
4
- data.tar.gz: a694fe203f76512691004d1138ad03cab7699d317a0a658ae6ac51732ff22b36
3
+ metadata.gz: 8c4f8a9edcebe8714dfa15132986c74e12e1823837ab71230008c42df9c2432d
4
+ data.tar.gz: f5cb984675323f2c2b83bd1d7be0626f511381b69e090c1d39bfb7b31d09321d
5
5
  SHA512:
6
- metadata.gz: aef00a1d31a310ea0061f54ebcb4044ccdcc7106d2f07074f4585ac5406776784bef9c698befa050b374d4dd37dd2495d3a3e4dcd6854e387fc8442901f3f227
7
- data.tar.gz: 85d9837f21b320f2bec1241f07e22ff150b49192017cb1ea20d2863fce93b547d5271cafe30b08baeaa582fd4f40b715ce488d9fb19bd7fe2cc43a2f565b5266
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 scope.respond_to?(:clear_session)
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 = param(login_param)
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 != param(login_confirm_param)
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 = param(login_param)
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 != param(login_confirm_param)
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
 
@@ -56,7 +56,7 @@ module Rodauth
56
56
  before_email_auth_request_route
57
57
 
58
58
  r.post do
59
- if account_from_login(param(login_param)) && open_account?
59
+ if account_from_login(login_param_value) && open_account?
60
60
  _email_auth_request
61
61
  end
62
62
 
@@ -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 login = param_or_nil(login_param)
227
- raise InternalRequestError, "no account for login" unless account = account_from_login(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 login = param_or_nil(login_param)
233
- _return_from_internal_request(!!account_from_login(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(_)
@@ -72,6 +72,11 @@ module Rodauth
72
72
 
73
73
  private
74
74
 
75
+ def check_csrf?
76
+ return false if use_json?
77
+ super
78
+ end
79
+
75
80
  def _set_otp_unlock_info
76
81
  if use_json?
77
82
  json_response[:num_successes] = otp_unlock_num_successes
@@ -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(param(login_param)) && get_unlock_account_key
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(param(login_param))
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(param(login_param))
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
- # False if not authenticated via single factor
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(param(login_param)) && allow_resending_verify_account_email?
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(param(login_param))) && allow_resending_verify_account_email?)
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") unless valid_login_entered?
41
+ footer += render("webauthn-autofill") if webauthn_autofill? && !valid_login_entered?
41
42
  footer
42
43
  end
43
44
 
@@ -74,7 +74,7 @@ module Rodauth
74
74
  end
75
75
 
76
76
  def account_from_webauthn_login
77
- account_from_login(param(login_param))
77
+ account_from_login(login_param_value)
78
78
  end
79
79
 
80
80
  def webauthn_login_options?
@@ -6,7 +6,7 @@ module Rodauth
6
6
  MAJOR = 2
7
7
 
8
8
  # The minor version of Rodauth, updated for new feature releases of Rodauth.
9
- MINOR = 36
9
+ MINOR = 37
10
10
 
11
11
  # The patch version of Rodauth, updated only for bug fixes from the last
12
12
  # feature release.
data/lib/rodauth.rb CHANGED
@@ -402,7 +402,11 @@ module Rodauth
402
402
  end
403
403
 
404
404
  module InstanceMethods
405
- def rodauth(name=nil)
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=nil)
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.36.0
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-07-23 00:00:00.000000000 Z
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.11
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