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