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.
- checksums.yaml +4 -4
- data/lib/rodauth/features/base.rb +15 -1
- data/lib/rodauth/features/change_login.rb +2 -2
- data/lib/rodauth/features/create_account.rb +2 -2
- data/lib/rodauth/features/email_auth.rb +1 -1
- data/lib/rodauth/features/internal_request.rb +4 -4
- data/lib/rodauth/features/json.rb +5 -0
- data/lib/rodauth/features/jwt.rb +5 -9
- data/lib/rodauth/features/lockout.rb +1 -1
- data/lib/rodauth/features/login.rb +1 -1
- data/lib/rodauth/features/login_password_requirements_base.rb +13 -0
- data/lib/rodauth/features/reset_password.rb +1 -1
- data/lib/rodauth/features/two_factor_base.rb +6 -13
- data/lib/rodauth/features/verify_account.rb +2 -2
- data/lib/rodauth/features/webauthn_autofill.rb +2 -1
- data/lib/rodauth/features/webauthn_login.rb +1 -1
- data/lib/rodauth/version.rb +1 -1
- data/lib/rodauth.rb +6 -2
- metadata +3 -258
- data/CHANGELOG +0 -521
- data/README.rdoc +0 -1555
- data/doc/account_expiration.rdoc +0 -41
- data/doc/active_sessions.rdoc +0 -56
- data/doc/argon2.rdoc +0 -54
- data/doc/audit_logging.rdoc +0 -44
- data/doc/base.rdoc +0 -123
- data/doc/change_login.rdoc +0 -25
- data/doc/change_password.rdoc +0 -26
- data/doc/change_password_notify.rdoc +0 -14
- data/doc/close_account.rdoc +0 -26
- data/doc/confirm_password.rdoc +0 -32
- data/doc/create_account.rdoc +0 -27
- data/doc/disallow_common_passwords.rdoc +0 -17
- data/doc/disallow_password_reuse.rdoc +0 -30
- data/doc/email_auth.rdoc +0 -55
- data/doc/email_base.rdoc +0 -18
- data/doc/error_reasons.rdoc +0 -77
- data/doc/guides/admin_activation.rdoc +0 -46
- data/doc/guides/already_authenticated.rdoc +0 -10
- data/doc/guides/alternative_login.rdoc +0 -46
- data/doc/guides/change_table_and_column_names.rdoc +0 -19
- data/doc/guides/create_account_programmatically.rdoc +0 -38
- data/doc/guides/delay_password.rdoc +0 -25
- data/doc/guides/email_only.rdoc +0 -16
- data/doc/guides/i18n.rdoc +0 -29
- data/doc/guides/internals.rdoc +0 -233
- data/doc/guides/links.rdoc +0 -12
- data/doc/guides/login_return.rdoc +0 -37
- data/doc/guides/migrate_password_hash_algorithm.rdoc +0 -15
- data/doc/guides/password_column.rdoc +0 -25
- data/doc/guides/password_confirmation.rdoc +0 -37
- data/doc/guides/password_requirements.rdoc +0 -43
- data/doc/guides/paths.rdoc +0 -51
- data/doc/guides/query_params.rdoc +0 -9
- data/doc/guides/redirects.rdoc +0 -17
- data/doc/guides/registration_field.rdoc +0 -68
- data/doc/guides/render_confirmation.rdoc +0 -17
- data/doc/guides/require_mfa.rdoc +0 -30
- data/doc/guides/reset_password_autologin.rdoc +0 -21
- data/doc/guides/share_configuration.rdoc +0 -34
- data/doc/guides/status_column.rdoc +0 -28
- data/doc/guides/totp_or_recovery.rdoc +0 -16
- data/doc/http_basic_auth.rdoc +0 -18
- data/doc/internal_request.rdoc +0 -539
- data/doc/json.rdoc +0 -56
- data/doc/jwt.rdoc +0 -52
- data/doc/jwt_cors.rdoc +0 -22
- data/doc/jwt_refresh.rdoc +0 -58
- data/doc/lockout.rdoc +0 -73
- data/doc/login.rdoc +0 -39
- data/doc/login_password_requirements_base.rdoc +0 -44
- data/doc/logout.rdoc +0 -22
- data/doc/otp.rdoc +0 -93
- data/doc/otp_lockout_email.rdoc +0 -30
- data/doc/otp_modify_email.rdoc +0 -19
- data/doc/otp_unlock.rdoc +0 -58
- data/doc/password_complexity.rdoc +0 -34
- data/doc/password_expiration.rdoc +0 -38
- data/doc/password_grace_period.rdoc +0 -24
- data/doc/password_pepper.rdoc +0 -52
- data/doc/path_class_methods.rdoc +0 -10
- data/doc/recovery_codes.rdoc +0 -61
- data/doc/release_notes/1.0.0.txt +0 -443
- data/doc/release_notes/1.1.0.txt +0 -8
- data/doc/release_notes/1.10.0.txt +0 -80
- data/doc/release_notes/1.11.0.txt +0 -32
- data/doc/release_notes/1.12.0.txt +0 -61
- data/doc/release_notes/1.13.0.txt +0 -34
- data/doc/release_notes/1.14.0.txt +0 -19
- data/doc/release_notes/1.15.0.txt +0 -21
- data/doc/release_notes/1.16.0.txt +0 -31
- data/doc/release_notes/1.17.0.txt +0 -23
- data/doc/release_notes/1.18.0.txt +0 -26
- data/doc/release_notes/1.19.0.txt +0 -116
- data/doc/release_notes/1.2.0.txt +0 -18
- data/doc/release_notes/1.20.0.txt +0 -175
- data/doc/release_notes/1.21.0.txt +0 -12
- data/doc/release_notes/1.22.0.txt +0 -11
- data/doc/release_notes/1.23.0.txt +0 -32
- data/doc/release_notes/1.3.0.txt +0 -21
- data/doc/release_notes/1.4.0.txt +0 -11
- data/doc/release_notes/1.5.0.txt +0 -74
- data/doc/release_notes/1.6.0.txt +0 -37
- data/doc/release_notes/1.7.0.txt +0 -6
- data/doc/release_notes/1.8.0.txt +0 -14
- data/doc/release_notes/1.9.0.txt +0 -15
- data/doc/release_notes/2.0.0.txt +0 -361
- data/doc/release_notes/2.1.0.txt +0 -31
- data/doc/release_notes/2.10.0.txt +0 -47
- data/doc/release_notes/2.11.0.txt +0 -31
- data/doc/release_notes/2.12.0.txt +0 -17
- data/doc/release_notes/2.13.0.txt +0 -19
- data/doc/release_notes/2.14.0.txt +0 -17
- data/doc/release_notes/2.15.0.txt +0 -48
- data/doc/release_notes/2.16.0.txt +0 -20
- data/doc/release_notes/2.17.0.txt +0 -10
- data/doc/release_notes/2.18.0.txt +0 -27
- data/doc/release_notes/2.19.0.txt +0 -61
- data/doc/release_notes/2.2.0.txt +0 -39
- data/doc/release_notes/2.20.0.txt +0 -10
- data/doc/release_notes/2.21.0.txt +0 -28
- data/doc/release_notes/2.22.0.txt +0 -43
- data/doc/release_notes/2.23.0.txt +0 -15
- data/doc/release_notes/2.24.0.txt +0 -15
- data/doc/release_notes/2.25.0.txt +0 -8
- data/doc/release_notes/2.26.0.txt +0 -45
- data/doc/release_notes/2.27.0.txt +0 -35
- data/doc/release_notes/2.28.0.txt +0 -16
- data/doc/release_notes/2.29.0.txt +0 -27
- data/doc/release_notes/2.3.0.txt +0 -37
- data/doc/release_notes/2.30.0.txt +0 -15
- data/doc/release_notes/2.31.0.txt +0 -47
- data/doc/release_notes/2.32.0.txt +0 -65
- data/doc/release_notes/2.33.0.txt +0 -18
- data/doc/release_notes/2.34.0.txt +0 -36
- data/doc/release_notes/2.35.0.txt +0 -22
- data/doc/release_notes/2.36.0.txt +0 -35
- data/doc/release_notes/2.4.0.txt +0 -22
- data/doc/release_notes/2.5.0.txt +0 -20
- data/doc/release_notes/2.6.0.txt +0 -37
- data/doc/release_notes/2.7.0.txt +0 -33
- data/doc/release_notes/2.8.0.txt +0 -20
- data/doc/release_notes/2.9.0.txt +0 -21
- data/doc/remember.rdoc +0 -79
- data/doc/reset_password.rdoc +0 -66
- data/doc/reset_password_notify.rdoc +0 -17
- data/doc/session_expiration.rdoc +0 -28
- data/doc/single_session.rdoc +0 -37
- data/doc/sms_codes.rdoc +0 -138
- data/doc/two_factor_base.rdoc +0 -70
- data/doc/update_password_hash.rdoc +0 -7
- data/doc/verify_account.rdoc +0 -67
- data/doc/verify_account_grace_period.rdoc +0 -19
- data/doc/verify_login_change.rdoc +0 -59
- data/doc/webauthn.rdoc +0 -118
- data/doc/webauthn_autofill.rdoc +0 -19
- data/doc/webauthn_login.rdoc +0 -16
- data/doc/webauthn_modify_email.rdoc +0 -19
- 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.
|
data/doc/release_notes/2.2.0.txt
DELETED
|
@@ -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).
|
data/doc/release_notes/2.3.0.txt
DELETED
|
@@ -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.
|