rodauth 1.22.0 → 1.23.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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +12 -0
  3. data/README.rdoc +5 -3
  4. data/doc/email_base.rdoc +1 -0
  5. data/doc/release_notes/1.23.0.txt +32 -0
  6. data/lib/rodauth.rb +5 -2
  7. data/lib/rodauth/features/base.rb +8 -0
  8. data/lib/rodauth/features/change_password_notify.rb +1 -1
  9. data/lib/rodauth/features/create_account.rb +1 -1
  10. data/lib/rodauth/features/email_auth.rb +3 -4
  11. data/lib/rodauth/features/email_base.rb +7 -2
  12. data/lib/rodauth/features/lockout.rb +1 -1
  13. data/lib/rodauth/features/login.rb +6 -2
  14. data/lib/rodauth/features/otp.rb +6 -3
  15. data/lib/rodauth/features/password_expiration.rb +1 -1
  16. data/lib/rodauth/features/recovery_codes.rb +3 -3
  17. data/lib/rodauth/features/reset_password.rb +2 -2
  18. data/lib/rodauth/features/sms_codes.rb +5 -5
  19. data/lib/rodauth/features/verify_account.rb +2 -2
  20. data/lib/rodauth/features/verify_login_change.rb +1 -1
  21. data/lib/rodauth/version.rb +1 -1
  22. data/templates/email-auth-request-form.str +2 -2
  23. data/templates/reset-password-request.str +3 -3
  24. data/templates/unlock-account-request.str +3 -3
  25. data/templates/verify-account-resend.str +3 -3
  26. metadata +5 -43
  27. data/Rakefile +0 -179
  28. data/spec/account_expiration_spec.rb +0 -225
  29. data/spec/all.rb +0 -1
  30. data/spec/change_login_spec.rb +0 -156
  31. data/spec/change_password_notify_spec.rb +0 -33
  32. data/spec/change_password_spec.rb +0 -202
  33. data/spec/close_account_spec.rb +0 -162
  34. data/spec/confirm_password_spec.rb +0 -70
  35. data/spec/create_account_spec.rb +0 -127
  36. data/spec/disallow_common_passwords_spec.rb +0 -93
  37. data/spec/disallow_password_reuse_spec.rb +0 -179
  38. data/spec/email_auth_spec.rb +0 -285
  39. data/spec/http_basic_auth_spec.rb +0 -143
  40. data/spec/jwt_cors_spec.rb +0 -57
  41. data/spec/jwt_refresh_spec.rb +0 -256
  42. data/spec/jwt_spec.rb +0 -235
  43. data/spec/lockout_spec.rb +0 -250
  44. data/spec/login_spec.rb +0 -328
  45. data/spec/migrate/001_tables.rb +0 -184
  46. data/spec/migrate/002_account_password_hash_column.rb +0 -11
  47. data/spec/migrate_password/001_tables.rb +0 -73
  48. data/spec/migrate_travis/001_tables.rb +0 -141
  49. data/spec/password_complexity_spec.rb +0 -109
  50. data/spec/password_expiration_spec.rb +0 -244
  51. data/spec/password_grace_period_spec.rb +0 -93
  52. data/spec/remember_spec.rb +0 -451
  53. data/spec/reset_password_spec.rb +0 -229
  54. data/spec/rodauth_spec.rb +0 -343
  55. data/spec/session_expiration_spec.rb +0 -58
  56. data/spec/single_session_spec.rb +0 -127
  57. data/spec/spec_helper.rb +0 -327
  58. data/spec/two_factor_spec.rb +0 -1462
  59. data/spec/update_password_hash_spec.rb +0 -40
  60. data/spec/verify_account_grace_period_spec.rb +0 -171
  61. data/spec/verify_account_spec.rb +0 -240
  62. data/spec/verify_change_login_spec.rb +0 -46
  63. data/spec/verify_login_change_spec.rb +0 -232
  64. data/spec/views/layout-other.str +0 -11
  65. data/spec/views/layout.str +0 -11
  66. data/spec/views/login.str +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3379479fde31b70cd341f7d862088a1c29f850a4293bbf08a4ddced9f152a026
4
- data.tar.gz: 3ec8abcd54a4da0a230d8d5a064d75febc247ee6ed35e3282b9b3ab2e1dde21d
3
+ metadata.gz: e4306ff08603b48a95bc543ffe53188d28d71ffdf8bf7427b65f4384eab8f430
4
+ data.tar.gz: a7319dbdfa10b43743ec76f32453ef0d65f3b1a30945f9c3988c7b87c6a639a2
5
5
  SHA512:
6
- metadata.gz: 6617d309568f8292c01d00343fdea602692fc6ca0be38d9846f0e8415a6da13cee10007e3286e03e2eb9170f693d4b2420861167225aab35ebea87b111627819
7
- data.tar.gz: 30efd30667ccb724c0796aa58123beb4d2711ac92a032be21d900ae74391901521d60b6b4806463494fc748461ecac3adb28ce3bf7c1956e6dcd4b72b0fea963
6
+ metadata.gz: 21d00b963f35ce2f356ba139cc07f0e0612484cc55a42efe5502f8401b8c373eeab2b2c71c92f68a2886d523e0b73a5fda80b5137fecec5b26ca9a0f517a3040
7
+ data.tar.gz: c5947144c88fbe98c31a2a24cd7a349953f8ff1717b9258f39ff58cbd98de85fb36abf6912b51496b6965ed7367f3fc13aad702db9443e587d9bde15dfc7c7c7
data/CHANGELOG CHANGED
@@ -1,3 +1,15 @@
1
+ === 1.23.0 (2020-03-06)
2
+
3
+ * Remove specs from the gem to reduce gem size by over 20% (jeremyevans)
4
+
5
+ * Make rodauth.authenticated? return true on OTP setup page (jeremyevans) (#68)
6
+
7
+ * Display link to email auth request form when user has entered login and incorrect password if using email_auth feature (janko) (#65)
8
+
9
+ * Add *_path and *_url methods for all *_route methods (janko) (#64)
10
+
11
+ * Add send_email configuration method for configuring how email is sent (janko) (#63)
12
+
1
13
  === 1.22.0 (2019-10-29)
2
14
 
3
15
  * Add jwt_cors feature to handle Cross-Origin Resource Sharing when using the jwt feature (jeremyevans)
@@ -931,6 +931,10 @@ verified_account? :: (verify_grace_period feature) Whether the account is curren
931
931
  login as they are in the grace period.
932
932
  locked_out? :: (lockout feature) Whether the account for the current session has been
933
933
  locked out.
934
+ *_path :: One of these is added for each of the routes added by Rodauth, giving the
935
+ relative path to the route.
936
+ *_url :: One of these is added for each of the routes added by Rodauth, giving the
937
+ absolute path to the routE.
934
938
 
935
939
  === With Multiple Configurations
936
940
 
@@ -1100,9 +1104,7 @@ Here are some examples of integrating Rodauth into applications that
1100
1104
  don't use Roda:
1101
1105
 
1102
1106
  * {Ginatra, a Sinatra-based git repository viewer}[https://github.com/jeremyevans/ginatra/commit/28108ebec96e8d42596ee55b01c3f7b50c155dd1]
1103
- * {Rodauth's demo site as a Rails application}[https://github.com/jeremyevans/rodauth-demo-rails] (
1104
- This uses the {roda-rails gem}[https://github.com/jeremyevans/roda-rails]
1105
- so that Rodauth uses Rails' CSRF and flash support)
1107
+ * {Rodauth's demo site as a Rails 6 application}[https://github.com/janko/rodauth-demo-rails]
1106
1108
  * {Grape application}[https://github.com/davydovanton/grape-rodauth]
1107
1109
  * {Hanami application}[https://github.com/davydovanton/rodauth_hanami]
1108
1110
 
@@ -25,3 +25,4 @@ email_to :: The email address to send emails to, by default the login of the
25
25
  current account.
26
26
  create_email(subject, body) :: Return a Mail::Message instance with the given subject
27
27
  and body.
28
+ send_email(email) :: Deliver a given Mail::Message instance.
@@ -0,0 +1,32 @@
1
+ = New Features
2
+
3
+ * When the email_auth feature is used, the link to request email
4
+ authentication is now displayed if the user inputs an incorrect
5
+ password. Previously, it was only shown if the user had not
6
+ yet entered a password.
7
+
8
+ * A send_email configuration method has been added, which can be
9
+ overridden to customize email delivery (such as logging such
10
+ email). The configuration method block accepts a Mail::Message
11
+ argument.
12
+
13
+ * All rodauth.*_route methods that return the name of the route
14
+ segment now have rodauth.*_path and rodauth.*_url equivalents,
15
+ which return the path and URL for the related routes, respectively.
16
+ The rodauth.*_path methods are useful when constructing links to
17
+ the related Rodauth pages on the same site, and the rodauth.*_url
18
+ methods are useful for constructing link to the Rodauth pages from
19
+ other sites or in email.
20
+
21
+ = Other Improvements
22
+
23
+ * Specs have been removed from the gem file, reducing gem size by
24
+ over 20%.
25
+
26
+ * rodauth.authenticated? now returns true on the OTP setup page
27
+ when using the otp feature. Previously, this method returned
28
+ false on the OTP setup page. However, as the user has not yet
29
+ setup OTP when viewing this page, they should be considered
30
+ fully authenticated, as they would be if they viewed any other
31
+ page before setting up OTP. This change probably only affects
32
+ cases where the layout uses rodauth.authenticated?.
@@ -101,11 +101,14 @@ module Rodauth
101
101
  attr_accessor :configuration
102
102
 
103
103
  def route(name=feature_name, default=name.to_s.tr('_', '-'), &block)
104
- auth_value_method "#{name}_route", default
104
+ route_meth = :"#{name}_route"
105
+ auth_value_method route_meth, default
106
+
107
+ define_method(:"#{name}_path") { route_path(send(route_meth)) }
108
+ define_method(:"#{name}_url") { route_url(send(route_meth)) }
105
109
 
106
110
  handle_meth = :"handle_#{name}"
107
111
  internal_handle_meth = :"_#{handle_meth}"
108
- route_meth = :"#{name}_route"
109
112
  before route_meth
110
113
 
111
114
  unless block.arity == 1
@@ -387,6 +387,14 @@ module Rodauth
387
387
  request.redirect(path)
388
388
  end
389
389
 
390
+ def route_path(route)
391
+ "#{prefix}/#{route}"
392
+ end
393
+
394
+ def route_url(route)
395
+ "#{request.base_url}#{route_path(route)}"
396
+ end
397
+
390
398
  def transaction(opts={}, &block)
391
399
  db.transaction(opts, &block)
392
400
  end
@@ -17,7 +17,7 @@ module Rodauth
17
17
  private
18
18
 
19
19
  def send_password_changed_email
20
- create_password_changed_email.deliver!
20
+ send_email(create_password_changed_email)
21
21
  end
22
22
 
23
23
  def create_password_changed_email
@@ -89,7 +89,7 @@ module Rodauth
89
89
  end
90
90
 
91
91
  def create_account_link
92
- "<p><a href=\"#{prefix}/#{create_account_route}\">Create a New Account</a></p>"
92
+ "<p><a href=\"#{create_account_path}\">Create a New Account</a></p>"
93
93
  end
94
94
 
95
95
  def login_form_footer
@@ -135,7 +135,7 @@ module Rodauth
135
135
  end
136
136
 
137
137
  def send_email_auth_email
138
- create_email_auth_email.deliver!
138
+ send_email(create_email_auth_email)
139
139
  end
140
140
 
141
141
  def email_auth_email_link
@@ -150,7 +150,7 @@ module Rodauth
150
150
 
151
151
  def login_form_footer
152
152
  footer = super
153
- footer += @email_auth_request_form if @email_auth_request_form
153
+ footer += email_auth_request_form if valid_login_entered?
154
154
  footer
155
155
  end
156
156
 
@@ -166,9 +166,8 @@ module Rodauth
166
166
  redirect email_auth_email_sent_redirect
167
167
  else
168
168
  # If the account has a password hash, allow password login, but
169
- # show form below to also login via email link.
169
+ # we will show form below to also login via email link.
170
170
  super
171
- @email_auth_request_form = email_auth_request_form
172
171
  end
173
172
  end
174
173
 
@@ -14,7 +14,8 @@ module Rodauth
14
14
 
15
15
  auth_methods(
16
16
  :create_email,
17
- :email_to
17
+ :email_to,
18
+ :send_email
18
19
  )
19
20
 
20
21
  def post_configure
@@ -24,6 +25,10 @@ module Rodauth
24
25
 
25
26
  private
26
27
 
28
+ def send_email(email)
29
+ email.deliver!
30
+ end
31
+
27
32
  def create_email(subject, body)
28
33
  create_email_to(email_to, subject, body)
29
34
  end
@@ -46,7 +51,7 @@ module Rodauth
46
51
  end
47
52
 
48
53
  def token_link(route, param, key)
49
- "#{request.base_url}#{prefix}/#{route}?#{param}=#{account_id}#{token_separator}#{convert_email_token_key(key)}"
54
+ "#{route_url(route)}?#{param}=#{account_id}#{token_separator}#{convert_email_token_key(key)}"
50
55
  end
51
56
 
52
57
  def convert_email_token_key(key)
@@ -218,7 +218,7 @@ module Rodauth
218
218
 
219
219
  def send_unlock_account_email
220
220
  @unlock_account_key_value = get_unlock_account_key
221
- create_unlock_account_email.deliver!
221
+ send_email(create_unlock_account_email)
222
222
  end
223
223
 
224
224
  def unlock_account_email_link
@@ -69,12 +69,16 @@ module Rodauth
69
69
 
70
70
  def skip_login_field_on_login?
71
71
  return false unless use_multi_phase_login?
72
- @valid_login_entered
72
+ valid_login_entered?
73
73
  end
74
74
 
75
75
  def skip_password_field_on_login?
76
76
  return false unless use_multi_phase_login?
77
- @valid_login_entered != true
77
+ !valid_login_entered?
78
+ end
79
+
80
+ def valid_login_entered?
81
+ @valid_login_entered
78
82
  end
79
83
 
80
84
  def login_hidden_field
@@ -219,15 +219,17 @@ module Rodauth
219
219
  end
220
220
 
221
221
  def two_factor_authentication_setup?
222
- super || otp_exists?
222
+ return true if super
223
+ return false if @otp_tmp_key
224
+ otp_exists?
223
225
  end
224
226
 
225
227
  def two_factor_need_setup_redirect
226
- "#{prefix}/#{otp_setup_route}"
228
+ otp_setup_path
227
229
  end
228
230
 
229
231
  def two_factor_auth_required_redirect
230
- "#{prefix}/#{otp_auth_route}"
232
+ otp_auth_path
231
233
  end
232
234
 
233
235
  def two_factor_remove
@@ -388,6 +390,7 @@ module Rodauth
388
390
  end
389
391
 
390
392
  def _otp_tmp_key(secret)
393
+ @otp_tmp_key = true
391
394
  @otp_user_key = nil
392
395
  @otp_key = secret
393
396
  end
@@ -8,7 +8,7 @@ module Rodauth
8
8
  error_flash "Your password cannot be changed yet", 'password_not_changeable_yet'
9
9
 
10
10
  redirect :password_not_changeable_yet
11
- redirect(:password_change_needed){"#{prefix}/#{change_password_route}"}
11
+ redirect(:password_change_needed){change_password_path}
12
12
 
13
13
  auth_value_method :allow_password_change_after, -86400
14
14
  auth_value_method :require_password_change_after, 90*86400
@@ -23,8 +23,8 @@ module Rodauth
23
23
 
24
24
  notice_flash "Additional authentication recovery codes have been added.", 'recovery_codes_added'
25
25
 
26
- redirect(:recovery_auth){"#{prefix}/#{recovery_auth_route}"}
27
- redirect(:add_recovery_codes){"#{prefix}/#{recovery_codes_route}"}
26
+ redirect(:recovery_auth){recovery_auth_path}
27
+ redirect(:add_recovery_codes){recovery_codes_path}
28
28
 
29
29
  loaded_templates %w'add-recovery-codes recovery-auth recovery-codes password-field'
30
30
  view 'add-recovery-codes', 'Authentication Recovery Codes', 'add_recovery_codes'
@@ -146,7 +146,7 @@ module Rodauth
146
146
  end
147
147
 
148
148
  def otp_auth_form_footer
149
- "#{super if defined?(super)}<p><a href=\"#{recovery_auth_route}\">Authenticate using recovery code</a></p>"
149
+ "#{super if defined?(super)}<p><a href=\"#{recovery_auth_path}\">Authenticate using recovery code</a></p>"
150
150
  end
151
151
 
152
152
  def otp_lockout_redirect
@@ -179,7 +179,7 @@ module Rodauth
179
179
  end
180
180
 
181
181
  def send_reset_password_email
182
- create_reset_password_email.deliver!
182
+ send_email(create_reset_password_email)
183
183
  end
184
184
 
185
185
  def reset_password_email_link
@@ -197,7 +197,7 @@ module Rodauth
197
197
  end
198
198
 
199
199
  def reset_password_request_link
200
- "<p><a href=\"#{prefix}/#{reset_password_request_route}\">Forgot Password?</a></p>"
200
+ "<p><a href=\"#{reset_password_request_path}\">Forgot Password?</a></p>"
201
201
  end
202
202
 
203
203
  def set_reset_password_email_last_sent
@@ -45,10 +45,10 @@ module Rodauth
45
45
  redirect :sms_already_setup
46
46
  redirect :sms_confirm
47
47
  redirect :sms_disable
48
- redirect(:sms_auth){"#{prefix}/#{sms_auth_route}"}
49
- redirect(:sms_needs_confirmation){"#{prefix}/#{sms_confirm_route}"}
50
- redirect(:sms_needs_setup){"#{prefix}/#{sms_setup_route}"}
51
- redirect(:sms_request){"#{prefix}/#{sms_request_route}"}
48
+ redirect(:sms_auth){sms_auth_path}
49
+ redirect(:sms_needs_confirmation){sms_confirm_path}
50
+ redirect(:sms_needs_setup){sms_setup_path}
51
+ redirect(:sms_request){sms_request_path}
52
52
  redirect(:sms_lockout){_two_factor_auth_required_redirect}
53
53
 
54
54
  loaded_templates %w'sms-auth sms-confirm sms-disable sms-request sms-setup sms-code-field password-field'
@@ -311,7 +311,7 @@ module Rodauth
311
311
  end
312
312
 
313
313
  def otp_auth_form_footer
314
- "#{super if defined?(super)}#{"<p><a href=\"#{sms_request_route}\">Authenticate using SMS code</a></p>" if sms_available?}"
314
+ "#{super if defined?(super)}#{"<p><a href=\"#{sms_request_path}\">Authenticate using SMS code</a></p>" if sms_available?}"
315
315
  end
316
316
 
317
317
  def otp_lockout_redirect
@@ -201,7 +201,7 @@ module Rodauth
201
201
  end
202
202
 
203
203
  def send_verify_account_email
204
- create_verify_account_email.deliver!
204
+ send_email(create_verify_account_email)
205
205
  end
206
206
 
207
207
  def verify_account_email_link
@@ -225,7 +225,7 @@ module Rodauth
225
225
  end
226
226
 
227
227
  def verify_account_resend_link
228
- "<p><a href=\"#{prefix}/#{verify_account_resend_route}\">Resend Verify Account Information</a></p>"
228
+ "<p><a href=\"#{verify_account_resend_path}\">Resend Verify Account Information</a></p>"
229
229
  end
230
230
 
231
231
  def create_account_set_password?
@@ -118,7 +118,7 @@ module Rodauth
118
118
  end
119
119
 
120
120
  def send_verify_login_change_email(login)
121
- create_verify_login_change_email(login).deliver!
121
+ send_email(create_verify_login_change_email(login))
122
122
  end
123
123
 
124
124
  def verify_login_change_email_link
@@ -6,7 +6,7 @@ module Rodauth
6
6
  MAJOR = 1
7
7
 
8
8
  # The minor version of Rodauth, updated for new feature releases of Rodauth.
9
- MINOR = 22
9
+ MINOR = 23
10
10
 
11
11
  # The patch version of Rodauth, updated only for bug fixes from the last
12
12
  # feature release.
@@ -1,6 +1,6 @@
1
- <form action="#{rodauth.prefix}/#{rodauth.email_auth_request_route}" method="post" class="rodauth form-horizontal" role="form" id="email-auth-request-form">
1
+ <form action="#{rodauth.email_auth_request_path}" method="post" class="rodauth form-horizontal" role="form" id="email-auth-request-form">
2
2
  #{rodauth.email_auth_request_additional_form_tags}
3
- #{rodauth.csrf_tag("#{rodauth.prefix}/#{rodauth.email_auth_request_route}")}
3
+ #{rodauth.csrf_tag(rodauth.email_auth_request_path)}
4
4
  #{rodauth.login_hidden_field}
5
5
  #{rodauth.button(rodauth.email_auth_request_button)}
6
6
  </form>
@@ -1,7 +1,7 @@
1
- <form action="#{rodauth.prefix}/#{rodauth.reset_password_request_route}" method="post" class="rodauth form-horizontal" role="form" id="reset-password-request-form">
1
+ <form action="#{rodauth.reset_password_request_path}" method="post" class="rodauth form-horizontal" role="form" id="reset-password-request-form">
2
2
  #{rodauth.reset_password_request_additional_form_tags}
3
- #{rodauth.csrf_tag("#{rodauth.prefix}/#{rodauth.reset_password_request_route}")}
3
+ #{rodauth.csrf_tag(rodauth.reset_password_request_path)}
4
4
  #{rodauth.reset_password_explanatory_text}
5
- #{(login = rodauth.param_or_nil(rodauth.login_param)) ? "<input type=\"hidden\" name=\"#{rodauth.login_param}\" value=\"#{h login}\"/>" : rodauth.render('login-field')}
5
+ #{rodauth.param_or_nil(rodauth.login_param) ? rodauth.login_hidden_field : rodauth.render('login-field')}
6
6
  #{rodauth.button(rodauth.reset_password_request_button)}
7
7
  </form>
@@ -1,7 +1,7 @@
1
- <form action="#{rodauth.prefix}/#{rodauth.unlock_account_request_route}" method="post" class="rodauth form-horizontal" role="form" id="unlock-account-request-form">
1
+ <form action="#{rodauth.unlock_account_request_path}" method="post" class="rodauth form-horizontal" role="form" id="unlock-account-request-form">
2
2
  #{rodauth.unlock_account_request_additional_form_tags}
3
- #{rodauth.csrf_tag("#{rodauth.prefix}/#{rodauth.unlock_account_request_route}")}
4
- <input type="hidden" name="#{rodauth.login_param}" value="#{h rodauth.param(rodauth.login_param)}"/>
3
+ #{rodauth.csrf_tag(rodauth.unlock_account_request_path)}
4
+ #{rodauth.login_hidden_field}
5
5
  #{rodauth.unlock_account_request_explanatory_text}
6
6
  <input type="submit" class="btn btn-primary inline" value="#{rodauth.unlock_account_request_button}"/>
7
7
  </form>
@@ -1,7 +1,7 @@
1
- <form action="#{rodauth.prefix}/#{rodauth.verify_account_resend_route}" method="post" class="rodauth form-horizontal" role="form" id="verify-account-resend-form">
1
+ <form action="#{rodauth.verify_account_resend_path}" method="post" class="rodauth form-horizontal" role="form" id="verify-account-resend-form">
2
2
  #{rodauth.verify_account_resend_additional_form_tags}
3
- #{rodauth.csrf_tag("#{rodauth.prefix}/#{rodauth.verify_account_resend_route}")}
3
+ #{rodauth.csrf_tag(rodauth.verify_account_resend_path)}
4
4
  #{rodauth.verify_account_resend_explanatory_text}
5
- #{(login = rodauth.param_or_nil(rodauth.login_param)) ? "<input type=\"hidden\" name=\"#{rodauth.login_param}\" value=\"#{h login}\"/>" : rodauth.render('login-field')}
5
+ #{rodauth.param_or_nil(rodauth.login_param) ? rodauth.login_hidden_field : rodauth.render('login-field')}
6
6
  #{rodauth.button(rodauth.verify_account_resend_button)}
7
7
  </form>
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: 1.22.0
4
+ version: 1.23.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: 2019-10-29 00:00:00.000000000 Z
11
+ date: 2020-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel
@@ -270,11 +270,11 @@ extra_rdoc_files:
270
270
  - doc/release_notes/1.20.0.txt
271
271
  - doc/release_notes/1.21.0.txt
272
272
  - doc/release_notes/1.22.0.txt
273
+ - doc/release_notes/1.23.0.txt
273
274
  files:
274
275
  - CHANGELOG
275
276
  - MIT-LICENSE
276
277
  - README.rdoc
277
- - Rakefile
278
278
  - dict/top-10_000-passwords.txt
279
279
  - doc/account_expiration.rdoc
280
280
  - doc/base.rdoc
@@ -318,6 +318,7 @@ files:
318
318
  - doc/release_notes/1.20.0.txt
319
319
  - doc/release_notes/1.21.0.txt
320
320
  - doc/release_notes/1.22.0.txt
321
+ - doc/release_notes/1.23.0.txt
321
322
  - doc/release_notes/1.3.0.txt
322
323
  - doc/release_notes/1.4.0.txt
323
324
  - doc/release_notes/1.5.0.txt
@@ -376,45 +377,6 @@ files:
376
377
  - lib/rodauth/features/verify_login_change.rb
377
378
  - lib/rodauth/migrations.rb
378
379
  - lib/rodauth/version.rb
379
- - spec/account_expiration_spec.rb
380
- - spec/all.rb
381
- - spec/change_login_spec.rb
382
- - spec/change_password_notify_spec.rb
383
- - spec/change_password_spec.rb
384
- - spec/close_account_spec.rb
385
- - spec/confirm_password_spec.rb
386
- - spec/create_account_spec.rb
387
- - spec/disallow_common_passwords_spec.rb
388
- - spec/disallow_password_reuse_spec.rb
389
- - spec/email_auth_spec.rb
390
- - spec/http_basic_auth_spec.rb
391
- - spec/jwt_cors_spec.rb
392
- - spec/jwt_refresh_spec.rb
393
- - spec/jwt_spec.rb
394
- - spec/lockout_spec.rb
395
- - spec/login_spec.rb
396
- - spec/migrate/001_tables.rb
397
- - spec/migrate/002_account_password_hash_column.rb
398
- - spec/migrate_password/001_tables.rb
399
- - spec/migrate_travis/001_tables.rb
400
- - spec/password_complexity_spec.rb
401
- - spec/password_expiration_spec.rb
402
- - spec/password_grace_period_spec.rb
403
- - spec/remember_spec.rb
404
- - spec/reset_password_spec.rb
405
- - spec/rodauth_spec.rb
406
- - spec/session_expiration_spec.rb
407
- - spec/single_session_spec.rb
408
- - spec/spec_helper.rb
409
- - spec/two_factor_spec.rb
410
- - spec/update_password_hash_spec.rb
411
- - spec/verify_account_grace_period_spec.rb
412
- - spec/verify_account_spec.rb
413
- - spec/verify_change_login_spec.rb
414
- - spec/verify_login_change_spec.rb
415
- - spec/views/layout-other.str
416
- - spec/views/layout.str
417
- - spec/views/login.str
418
380
  - templates/add-recovery-codes.str
419
381
  - templates/button.str
420
382
  - templates/change-login.str
@@ -488,7 +450,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
488
450
  - !ruby/object:Gem::Version
489
451
  version: '0'
490
452
  requirements: []
491
- rubygems_version: 3.0.3
453
+ rubygems_version: 3.1.2
492
454
  signing_key:
493
455
  specification_version: 4
494
456
  summary: Authentication and Account Management Framework for Rack Applications