Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Although Shield currently offers 2FA, its support is somewhat limited. Like this discussion #1120, I also feel that it could benefit from a more robust system, like supporting multiple 2FA systems, allowing global/per user 2FA, or setting custom 2FA actions per user group, like suggested in discussions.
I would love to know what you think.
Description
This PR expands support of 2FA actions for Shield. It allows having multiple active 2FA methods, per-user or site-wide 2FA, per-group custom 2FA action, and a default. The settings
$Mfa
,$forceMfa
,$actionsMfa
,$defaultMfa
and$matrixMfa
are introduced to theAuth
config file to control these settings. The per-user 2FA is achieved through a new column namedmfa
in the user table acting as a flag. TheUser
Entity introduces theisMfaActive() :bool
method for easy access to the property.Within the
Authenticators/Session.php:511
, currently, theauth_action_message
is being assigned the extra field directly. Expanding the 2FA actions, that extra field may be useful to store data related to the identity, so theActionInterface
introduces thegetActionMessage() :string
method to get thisauth_action_message
value from the action.These changes introduce breaking changes to past versions.
Implements #1120
Checklist: