rodauth 2.36.0 → 2.37.0
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|