1.1 Регистрация
RegistrationForm
[login] (email/phone/login)
[password]
[...custom attrubites]
1.2 Регистрация -> Подтверждение
ConfirmForm
[email/phone]
[code]
1.3 Вход
LoginForm
[login] (email/phone/login)
[password]
1.4 Вход -> Подтверждение *(если isPasswordAvailable = false)
ConfirmForm
[email/phone]
[code]
1.5 Восстановление
RecoveryPasswordForm
[login] (email/phone)
1.6 Восстановление -> Подтверждение
RecoveryPasswordConfirmForm
[login] (email/phone)
[code]
2.1 Вход/регистрация
ProviderlLoginForm
[socialParams]
2.2 Ввод email (если социальная сеть не выдала его)
SocialEmailForm
[uid]
[email]
2.2 Ввод email/phone -> Подтверждение
SocialConfirmForm
[uid]
[email]
[code]
- В конфигурации необходимо объявить провайдеры, которые могут использоваться для 2fa, их сейчас может быть два -
notifier
иgoogle
.
'modules' => [
'auth' => [
'twoFactorProviders' => [
'notifier' => [],
],
],
],
- В формах, где необходима 2FA, необходимо добавить TwoFactorRequireValidator
[
'amount',
TwoFactorRequireValidator::class,
'userId' => $this->user->primaryKey,
'providerName' => 'notifier',
'codeAttribute' => 'code',
]
Последний параметр codeAttribute
не обязательный. Он необходим для случая, когда 2fa используется и обрабатывается
на фронтенде прям в форме (с помощью onTwoFactor обработчика компонента Form
) и затем форма отправляет те же данные, только с кодом
подтверждения (code
).
Если обработчик onTwoFactor
не указывается на фронтенде, то код будет вводить в отдельной форме (например, в модальном окне)
и отправляться на бекенд методом POST /api/v1/auth/2fa/<providerName>/confirm
. Тогда codeAttribute
указывать не нужно.