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.
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