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
@@ -1,48 +0,0 @@
1
- = New Features
2
-
3
- * An internal_request feature has been added. This feature allows
4
- for interacting with Rodauth by calling methods, instead of having
5
- to use a website or JSON API. This feature is designed primarily
6
- for administrative use, so that administrators can create accounts,
7
- change passwords or logins for accounts, and handle similar actions
8
- without the user of the account being involved.
9
-
10
- For example, assuming you've loaded the change_password and
11
- internal_request features, and that your Roda class that
12
- is loading Rodauth is named App, you can change the password
13
- for the account with id 1 using:
14
-
15
- App.rodauth.change_password(account_id: 1, password: 'foobar')
16
-
17
- The internal request methods are implemented as class methods
18
- on the Rodauth::Auth subclass (the object returned by App.rodauth).
19
- These methods call methods on a subclass of that class specific
20
- to internal requests.
21
-
22
- The reason the feature is named internal_request is that these
23
- methods are implemented by submitting a request internally, that is
24
- processed almost exactly the same way as Rodauth would process a
25
- web request.
26
-
27
- See the internal_request feature documentation for details on which
28
- internal request methods are available and the options they take.
29
-
30
- * A path_class_methods feature has been added, that allows for calling
31
- *_path and *_url as class methods. If you would like to call the
32
- *_url methods as class methods, make sure to use the base_url
33
- configuration method to set the base URL so that it does not require
34
- request-specific information.
35
-
36
- * Rodauth::Auth classes now have a configuration_name method that
37
- returns the configuration name associated with the class. They also
38
- have a configuration method that returns the configuration
39
- associated with the class.
40
-
41
- * Rodauth::Feature now supports an internal_request_method method for
42
- specifying which methods are supported as internal request methods.
43
-
44
- = Other Improvements
45
-
46
- * The default base_url configuration method will now use the domain
47
- method to get the domain to use, instead of getting the domain
48
- information directly from the request environment.
@@ -1,20 +0,0 @@
1
- = New Features
2
-
3
- * Rodauth.lib has been added for using Rodauth purely as a library,
4
- useful in non-web applications:
5
-
6
- require 'rodauth'
7
- rodauth = Rodauth.lib do
8
- enable :create_account, :change_password
9
- end
10
- rodauth.create_account(login: 'foo@example.com', password: '...')
11
- rodauth.change_password(account_id: 24601, password: '...')
12
-
13
- This is built on top of the internal_request feature, and works by
14
- creating a Roda application with the rodauth plugin, and returning
15
- the related Rodauth::Auth class.
16
-
17
- = Other Improvements
18
-
19
- * The internal_request feature now works correctly for configurations
20
- where only_json? is set to true.
@@ -1,10 +0,0 @@
1
- = Improvements
2
-
3
- * The jwt_refresh feature now works for unverified accounts when using
4
- the verify_account_grace_period feature.
5
-
6
- * When trying to create an account that already exists but is
7
- unverified, Rodauth now returns a 4xx response.
8
-
9
- * When trying to login to an unverified account, Rodauth now returns a
10
- 4xx response.
@@ -1,27 +0,0 @@
1
- = New Features
2
-
3
- * When using the json and multifactor auth features, the JSON API can
4
- now access the multifactor-manage route to get lists of endpoints
5
- for setting up and disabling supported multifactor authentication
6
- methods. The JSON API can now also access the multifactor-auth
7
- route to get a list of endpoints for multifactor authentication for
8
- the currently logged in account.
9
-
10
- = Other Improvements
11
-
12
- * In the otp feature, the viewbox: true rqrcode option is now used
13
- when creating the QR code. This results in a QR code that is
14
- displayed better and is easier to style. This option only has
15
- an effect when using rqrcode 2+.
16
-
17
- * When using the :auth_class option when loading the rodauth plugin,
18
- the configuration name is set in the provided auth class, unless the
19
- auth class already has a configuration name set.
20
-
21
- * The example migration now recommends using a partial index on the
22
- email column in cases where the database supports partial indexes.
23
- Previously, it only recommended it on PostgreSQL.
24
-
25
- * The argon2 feature now works with argon2 2.1.0. Older versions of
26
- Rodauth work with both earlier and later versions of argon2, but
27
- not 2.1.0.
@@ -1,61 +0,0 @@
1
- = New Features
2
-
3
- * A login_maximum_bytes configuration method has been added, setting
4
- the maximum bytes allowed in a login. This was added as
5
- login_maximum_length sets the maximum length in characters. It's
6
- possible a different number of maximum bytes than maximum
7
- characters is desired by some applications, and since the database
8
- column size may be enforced in bytes, it's useful to have a check
9
- before trying a database query that would raise an exception. This
10
- default value for login_maximum_bytes is 255, the same as the
11
- default value for login_maximum_length.
12
-
13
- A login_too_many_bytes_message configuration method has been added
14
- for customizing the error message if a login has too many bytes.
15
-
16
- * password_maximum_length and password_maximum_bytes configuration
17
- methods have been added, specifying the maximum size of passwords
18
- in characters and bytes, respectively. Both configurations default
19
- to nil, meaning no limit, so there is no change in default behavior.
20
-
21
- The bcrypt algorithm only uses the first 72 bytes of a password, and
22
- in some environments it may be desirable to reject passwords over
23
- that limit. password_too_long_message and
24
- password_too_many_bytes_message configuration methods have been
25
- added for customizing the error messages used for passwords that are
26
- too long.
27
-
28
- Note that in most environments, if you want to support passwords
29
- over 72 bytes and have the entire password be considered, you should
30
- probably use the argon2 feature.
31
-
32
- = Other Improvements
33
-
34
- * The subclass created by the internal_request feature is now set
35
- to the InternalRequest constant on the superclass, mostly to
36
- make identifying it easier in inspect output.
37
-
38
- * Support has been improved for custom Rodauth::Auth subclasses that
39
- load features before the subclass is loaded into Roda, by delaying
40
- the call to post_configure until the subclass is loaded into Roda.
41
- Among other things, this fixes the use of the internal_request
42
- feature in such classes.
43
-
44
- * Multi-level inheritance of Rodauth::Auth is now supported. This can
45
- be useful as a way to share custom authentication settings between
46
- multiple Rodauth configurations. However, users of multi-level
47
- inheritance should be careful not to load features in subclasses
48
- that override custom settings in superclasses.
49
-
50
- = Other
51
-
52
- * Rodauth's primary discussion forum is now GitHub Discussions. The
53
- rodauth Google Group is still available for users who would prefer
54
- to use that instead.
55
-
56
- = Backwards Compatibility
57
-
58
- * The addition of login_maximum_bytes with a default value of 255 is
59
- backwards incompatible for applications that want to support logins
60
- with multibyte characters where the number of characters in the
61
- login is at or below 255, but the number of bytes is above 255.
@@ -1,39 +0,0 @@
1
- = New Features
2
-
3
- * When using the jwt_refresh feature, you can remove the current
4
- refresh token when logging out by submitting the refresh token
5
- in the logout request, the same as when submitting the refresh
6
- token to obtain a new refresh token. You can also use a value
7
- of "all" instead of the refresh token to remove all refresh
8
- tokens when logging out.
9
-
10
- * A rodauth.otp_last_use method has been added to the otp feature,
11
- allowing you to determine when the otp was last used.
12
-
13
- = Other Improvements
14
-
15
- * When using multifactor authentication, rodauth.authenticated? and
16
- rodauth.require_authentication now cache values in the session and
17
- do not perform queries every time they are called.
18
-
19
- * Many guides for common scenarios have been added to the
20
- documentation. These augment Rodauth's existing comprehensive
21
- feature documentation, which is aimed to be more of a reference
22
- and less of a guide.
23
-
24
- * When the verify_account_grace_period and email_auth features are
25
- used with a multifactor authentication feature, and the
26
- verify_account_set_password? configuration method is set to true,
27
- Rodauth no longer raises a NoMethodError when checking if the
28
- session was authenticated.
29
-
30
- * In the verify_account feature, if verify_account_email_resend
31
- returns false indicating no email was sent, an error message
32
- is now used, instead of a success message.
33
-
34
- * In the password_complexity feature, the password_dictionary
35
- configuration method was previously ignored if the default
36
- password dictionary file existed.
37
-
38
- * Rodauth and all features that ship with it now have 100% branch
39
- coverage.
@@ -1,10 +0,0 @@
1
- = Improvements
2
-
3
- * When using the active_sessions and remember features together,
4
- doing a global logout will automatically remove the remember key for
5
- the account, so the account will no longer be able to automatically
6
- create new sessions using the remember key.
7
-
8
- * The default value of webauthn_rp_id now removes the port from the
9
- origin if it exists, since the WebAuthn spec does not allow ports
10
- in the relying party identifier.
@@ -1,28 +0,0 @@
1
- = Improvements
2
-
3
- * When using the verify_account_grace_period feature, if the grace
4
- period has expired for currently logged in session, require_login
5
- will clear the session and redirect to the login page. This is
6
- implemented by having the unverified_account_session_key store the
7
- time of expiration, as an integer.
8
-
9
- * The previously private require_account method is now public. The
10
- method is used internally by Rodauth to check that not only is the
11
- current session logged in, but also that the account related to the
12
- currently logged in session still exists in the database. The only
13
- reason you would want to call require_account instead of
14
- require_authentication is if you want to handle cases where there
15
- can be logged in sessions for accounts that have been deleted.
16
-
17
- * Rodauth now avoids an unnecessary bcrypt hash calculation when
18
- updating accounts when using the account_password_hash_column
19
- configuration method.
20
-
21
- * When WebAuthn token last use times are displayed, Rodauth now uses a
22
- fixed format of YYYY-MM-DD HH:MM:SS, instead of relying on
23
- Time#to_s. If this presents an problem for your application, please
24
- open an issue and we can add a configuration method to control
25
- the behavior.
26
-
27
- * A typo in the default value of global_logout_label in the
28
- active_sessions feature has been fixed.
@@ -1,43 +0,0 @@
1
- = New Features
2
-
3
- * Rodauth now ignores parameters containing ASCII NUL bytes ("\0") by
4
- default. You can customize this behavior using the
5
- null_byte_parameter_value configuration method.
6
-
7
- * A reset_password_notify feature has been added for emailing users
8
- after successful password resets.
9
-
10
- * External features can now use the email method inside their
11
- feature definitions to DRY up the creation of email configuration
12
- methods. The email method will setup the following configuration
13
- methods for the feature:
14
-
15
- * ${name}_email_subject
16
- * ${name}_email_body
17
- * create_${name}_email
18
- * send_${name}_email
19
-
20
- = Other Improvements
21
-
22
- * The active_sessions feature now correctly handles logouts for
23
- sessions that were created before the active_sessions feature was
24
- added to the Rodauth configuration.
25
-
26
- * The change_password_notify feature now works correctly when using
27
- template precompilation.
28
-
29
- * The update_sms method now updates the in-memory sms hash instead of
30
- the in-memory account hash. This only has an effect if you are
31
- using the sms_codes feature and customizing Rodauth to access one
32
- of these hashes after a call to update_sms.
33
-
34
- = Backwards Compatibility
35
-
36
- * If your application requires the ability to submit values containing
37
- ASCII NUL bytes ("\0") as Rodauth parameters, you should use the
38
- new null_byte_parameter_value configuration method to pass the
39
- value through unchanged:
40
-
41
- null_byte_parameter_value do |_, v|
42
- v
43
- end
@@ -1,15 +0,0 @@
1
- = Improvements
2
-
3
- * The otp feature now uses the :use_path option when rendering QR
4
- codes, resulting in significantly smaller svg images.
5
-
6
- * Removing all multifactor authentication methods now removes the fact
7
- that the session was authenticated via SMS, if the user used SMS as
8
- an authentication method for the current session.
9
-
10
- * The invalid domain check in the internal_request feature now works
11
- correctly when using the rack master branch.
12
-
13
- * The :httponly cookie option is no longer set automatically in the
14
- remember feature if the :http_only cookie option was provided by the
15
- user (rack recognizes both options).
@@ -1,15 +0,0 @@
1
- = New Features
2
-
3
- * rodauth.otp_available? has been added for checking whether the
4
- account is allowed to authenticate with OTP. It returns true
5
- when the account has setup OTP and OTP use is not locked out.
6
-
7
- * rodauth.recovery_codes_available? has been added for checking
8
- whether the account is allowed to authenticate using a recovery
9
- code. It returns true when there are any available recovery
10
- codes for the account to use.
11
-
12
- = Other Improvements
13
-
14
- * The otp feature no longer includes the <?xml> tag for svg images,
15
- since that results in invalid HTML.
@@ -1,8 +0,0 @@
1
- = New Features
2
-
3
- * You can now disable routing to specific routes by calling the
4
- related *_route configuration method with nil or false. The main
5
- reason you would want to do this is if you want to load a feature,
6
- but only want to use it for internal requests (using the
7
- internal_request feature), and not have the feature's routes exposed
8
- to users.
@@ -1,45 +0,0 @@
1
- = New Features
2
-
3
- * An argon2_secret configuration method has been added to the argon2
4
- feature, supporting argon2's built-in password peppering.
5
-
6
- = Other Improvements
7
-
8
- * Links are no longer automatically displayed for routes that are
9
- disabled by calling the *_route method with nil.
10
-
11
- * The QR code used by the otp feature now uses a white background
12
- instead of a transparent background, fixing issues when the
13
- underlying background is dark.
14
-
15
- * Input parameter bytesize is now limited to 1024 bytes by default.
16
- Parameters larger than that will be ignored, as if they weren't
17
- submitted.
18
-
19
- * The Rodauth::Auth class for internal request classes now uses the
20
- same configuration name as the class it is based on.
21
-
22
- * The session_key_prefix configuration method no longer also prefixes
23
- the keys used in the flash hash.
24
-
25
- * The *_path and *_url methods now return nil when the related *_route
26
- method returns nil, indicating the route is disabled.
27
-
28
- * A more explicit error message is raised when using a feature that
29
- requires the hmac_secret being set and not setting hmac_secret.
30
-
31
- = Backwards Compatibility
32
-
33
- * If you are using session_key_prefix and flash messages, you will
34
- probably need to adjust your code to remove the prefix from the
35
- expected flash keys, or manually prefix the flash keys by using
36
- the flash_error_key and flash_notice_key configuration methods.
37
-
38
- * The limiting of input parameter bytesizes by default could potentially
39
- break applications that use Rodauth's parameter parsing method to
40
- handle parameters that Rodauth itself doesn't handle. You can use
41
- the max_param_bytesize configuration method to set a larger bytesize,
42
- or use a value of nil with the method for the previous behavior of
43
- no limit. Additionally, to customize the behavior if a parameter
44
- is over the allowed bytesize, you can use the
45
- over_max_bytesize_param_value configuration method.
@@ -1,35 +0,0 @@
1
- = Improvements
2
-
3
- * Token ids submitting in requests are now converted to integers if
4
- the configuration uses an integer primary key for the accounts
5
- table. If the configuration uses a non-integer primary key for
6
- the accounts table, the convert_token_id configuration method can
7
- be used, which should return the token id converted to the
8
- appropriate type, or nil if the token id is not valid for the type.
9
-
10
- This revised handling avoids raising a database error when an
11
- invalid token is submitted.
12
-
13
- * The button template can now be overridden in the same way that
14
- other Rodauth templates can be overridden.
15
-
16
- * When using the Bootstrap CSS framework, the text field in the
17
- Webauthn setup and auth forms is automatically hidden. The text
18
- field already had a rodauth-hidden class to make it easy to hide
19
- when using other CSS frameworks.
20
-
21
- * The email_from and email_to methods are now public instead of
22
- private.
23
-
24
- * A nicer error is raised if the Sequel Database object is missing.
25
-
26
- * A regression in the TOTP QR output that resulted in the QR codes
27
- being solid black squares has been fixed (this was fixed in
28
- Rodauth 2.26.1).
29
-
30
- = Backwards Compatibility
31
-
32
- * The webauth_credentials_for_get method in the webauthn feature has
33
- been renamed to webauthn_credentials_for_get for consistency with
34
- other methods. The webauth_credentials_for_get method will still
35
- work until Rodauth 3, but will issue deprecation warnings.
@@ -1,16 +0,0 @@
1
- = New Features
2
-
3
- * A webauthn_key_insert_hash configuration method has been added when
4
- using the webauthn feature, making it easier to add new columns to
5
- the webauthn key data, such as a custom name for the authenticator.
6
-
7
- = Other Improvements
8
-
9
- * When using the verify_account_grace_period feature, logged_in? now
10
- returns false for sessions where the grace period has expired.
11
-
12
- * When using the internal_request and reset_password features,
13
- submitting an internal request for an invalid login no longer tries
14
- to render a reset password request form.
15
-
16
- * The password_hash method is now public.
@@ -1,27 +0,0 @@
1
- = New Features
2
-
3
- * When using the remember feature, by default, the remember deadline
4
- is extended while logged in, if it hasn't been extended in the last
5
- hour
6
-
7
- * An account! method has been added, which will return the hash for
8
- the account if already retrieved, or attempt to retrieve the
9
- account hash using the currently logged in session if not.
10
- Because of the ambiguity in the provenance of the returned account
11
- hash, callers should be careful when using this method.
12
-
13
- * A remove_active_session method has been added. You can call this
14
- method with a specific session id, and it will remove the related
15
- active session.
16
-
17
- * A render: false plugin option is now support, which will disable
18
- the automatic loading of the render plugin. This should only be
19
- used if you are completely replacing Rodauth's view rendering with
20
- your own.
21
-
22
- = Other Improvements
23
-
24
- * When logging in when using the active_sessions feature, if there is
25
- a current active session, it is removed before a new active session
26
- is created. This prevents some stale active sessions from remaining
27
- in the database (which would eventually be cleaned up later).
@@ -1,37 +0,0 @@
1
- = New Features
2
-
3
- * Configuration methods have been added for easier validation of
4
- logins when logins must be valid email addresses (the default):
5
-
6
- * login_valid_email?(login) can be used for full control of
7
- determining whether the login is valid.
8
-
9
- * login_email_regexp can be used to set the regexp used in the
10
- default login_valid_email? check.
11
-
12
- * login_not_valid_email_message can be used to set the field
13
- error message if the login is not a valid email. Previously, this
14
- value was hardcoded and not translatable.
15
-
16
- * The {create,drop}_database_authentication_functions now work
17
- correctly with uuid keys on PostgreSQL. All other parts of
18
- Rodauth already worked correctly with uuid keys.
19
-
20
- = Other Improvements
21
-
22
- * The before_jwt_refresh_route hook is now called before the route
23
- is taken. Previously, the configuration method had no effect.
24
-
25
- * rodauth.login can now be used by external code to login the current
26
- account (the account that rodauth.account returns). This should be
27
- passed the authentication type string used to login, such as
28
- password.
29
-
30
- * The jwt_refresh route now returns an error for requests where a
31
- valid access token for a logged in session is not provided. You
32
- can use the jwt_refresh_without_access_token_message and
33
- jwt_refresh_without_access_token_status configuration methods
34
- to configure the error response.
35
-
36
- * The new refresh token is now available to the after_refresh_token
37
- hook by looking in json_response[jwt_refresh_token_key].
@@ -1,15 +0,0 @@
1
- = New Features
2
-
3
- * A webauthn_autofill feature has been added to allow autofilling
4
- webauthn credentials during login (also known as conditional
5
- mediation). This allows for easier login using passkeys.
6
- This requires a supported browser and operating system on the
7
- client side to work.
8
-
9
- = Other Improvements
10
-
11
- * The load_memory method in the remember feature no longer raises
12
- a NoMethodError if the there is a remember cookie, the session is
13
- already logged in, and the account no longer exists. The
14
- load_memory method now removes the remember cookie and clears the
15
- session in that case.
@@ -1,47 +0,0 @@
1
- = New Features
2
-
3
- * The internal_request feature now supports WebAuthn, using
4
- the following methods:
5
-
6
- * With the webauthn feature:
7
- * webauthn_setup_params
8
- * webauthn_setup
9
- * webauthn_auth_params
10
- * webauthn_auth
11
- * webauthn_remove
12
-
13
- * With the webauthn_login feature:
14
- * webauthn_login_params
15
- * webauthn_login
16
-
17
- * A webauthn_login_user_verification_additional_factor? configuration
18
- method has been added to the webauthn_login feature. By default,
19
- this method returns false. If you configure the method to return
20
- true, and the WebAuthn credential provided specifies that it
21
- verified the user, then this will treat the user verification as
22
- a second factor, so the user will be considered multifactor
23
- authenticated after successful login. You should only set this
24
- method to true if you consider the WebAuthn user verification
25
- strong enough to be a independent factor.
26
-
27
- * A json_response_error? configuration method has been added to the
28
- json feature. This should return whether the current response
29
- should be treated as an error by the json feature. By default,
30
- it is true if json_response_error_key is set in the response,
31
- since that is the default place that Rodauth stores errors when
32
- using the json feature.
33
-
34
- * A webauthn_invalid_webauthn_id_message configuration method has
35
- been added for customizing the error message used for invalid
36
- WebAuthn IDs.
37
-
38
- = Other Improvements
39
-
40
- * The argon2 feature now supports setting the Argon2 p_cost if
41
- argon2 2.1+ is installed.
42
-
43
- * An :invalid_webauthn_id error reason is now used for invalid
44
- WebAuthn IDs.
45
-
46
- * The clear_session method now works as expected for internal
47
- requests.
@@ -1,65 +0,0 @@
1
- = New Features
2
-
3
- * Rodauth now supports secret rotation using the following
4
- configuration methods:
5
-
6
- * hmac_old_secret
7
- * argon2_old_secret (argon2 feature)
8
- * jwt_old_secret (jwt feature)
9
-
10
- You can use these methods to specify the previous secret when
11
- rotating secrets. Note that full secret rotation (where you can
12
- remove use of the old secret) may not be simple. Here are some
13
- cases that require additional work:
14
-
15
- * Rotating the argon2 secret requires the use of the
16
- update_password_hash feature. You cannot remove the use of
17
- argon2_old_secret unless every user who created a password under
18
- the old secret has logged in after the new secret was added.
19
- Removing the old secret before a user has logged in after the new
20
- secret was added will invalidate the password for the user. Thus,
21
- full rotation of the argon2 secret requires invalidating passwords
22
- for inactive accounts.
23
-
24
- * Full rotating of the hmac secret when using the remember feature
25
- requires that all remember cookies created under the previous
26
- secret has been removed. By default, remember cookies expire in
27
- 2 weeks, but it is possible to set them much longer.
28
-
29
- * Full rotation of the hmac secret when using the verify_account
30
- feature requires invalidating old verify account links, since
31
- verify account links do not have a deadline. However, after old
32
- verify account links have been invalidated, a user can request a
33
- new verify account link, which will work.
34
-
35
- * Full rotation of the hmac secret when using the otp feature
36
- requires disabling otp and reenabling otp. The
37
- otp_valid_code_for_old_secret configuration method has been added,
38
- which can be used to handle cases where a user successfully
39
- authenticated via TOTP using the old secret. This can be used
40
- to direct them to a page to remove the TOTP authenticator and
41
- then setup a new TOTP authenicator.
42
-
43
- * Many *_response configuration methods have been added, which allow
44
- users to override Rodauth's default behavior in successful cases of
45
- setting a flash notice and then redirecting. Note that using these
46
- configuration methods correctly requires that they halt request
47
- processing. You cannot just have them return a response body. You
48
- can use the return_response method to set the response body and
49
- halt processing.
50
-
51
- * An sms_needs_confirmation_notice_flash configuration method has been
52
- added, for setting the flash notice when setting up SMS
53
- authentication. By default, it uses the
54
- sms_needs_confirmation_error_flash value.
55
-
56
- = Other Improvements
57
-
58
- * The argon2 feature no longer uses the Base64 constant. Previously,
59
- it uses the library without attempting to require the base64 library,
60
- which would break if the base64 library was not already required.
61
-
62
- * Rodauth's documentation now recommends against the use of the argon2
63
- feature, because for typical interactive login uses (targetting
64
- sub-200ms response times), argon2 provides significantly worse
65
- security than bcrypt.
@@ -1,18 +0,0 @@
1
- = Improvements
2
-
3
- * Rodauth no longer accidentally confirms an SMS number upon valid
4
- authentication by an alternative second factor.
5
-
6
- * Rodauth now automatically expires SMS confirmation codes after 24
7
- hours by default. You can use the sms_confirm_deadline
8
- configuration method to adjust the deadline. Previously, if an
9
- invalid SMS number was submitted, or the SMS confirm code was never
10
- received, it was not possible to continue SMS setup without
11
- administrative intervention.
12
-
13
- * Rodauth no longer overwrites existing primary key values when
14
- inserting new accounts. This fixes cases such as setting account
15
- primary key values to UUIDs before inserting.
16
-
17
- * When submitting a request to a valid endpoint with a missing token,
18
- Rodauth now returns an error response instead of a 404 response.