NextAuth.js - Проверка подлинности учетных данных, добавление кнопки сброса пароля
Я разрабатываю систему входа в систему с помощью next/auth и использую систему регистрации учетных данных с системой только по приглашениям. Есть ли способ добавить ссылку для сброса пароля в сгенерированный
/api/auth/signin
страница?
2 ответа
Я видел и использовал похожий на этот. Возможно, это поможет вам.
- Отправьте сообщение из моего бэкэнда, чтобы создать нового пользователя auth0. На этом этапе auth0 user.email_verified = false.
- Отправьте сообщение, чтобы запустить электронное письмо для сброса пароля для нового пользователя.
{% if user.email_verified == false %}
<h1>Invitation to our awesome app</h1>
<p>Please verify your email address and set your initial password by clicking the following link:</p>
<p><a href="{{ url }}">Confirm my account</a></p>
{% else %}
<h1>Password Change Request</h1>
<p>You have submitted a password change request. </p>
<p>If it wasn't you please disregard this email and make sure you can still login to your account. If it was you, then to <strong>confirm the password change <a href="{{ url }}">click here</a></strong>.</p>
{% endif %}
<p>If you have any issues with your account, please don’t hesitate to contact us at 1-888-AWESOMECO.</p>
<br>
Thanks!
<br>
- Настройте перенаправление в шаблоне электронной почты для сброса пароля, чтобы, когда пользователь щелкнул ссылку с приглашением, ему было предложено сбросить свой пароль, а затем они были перенаправлены в наше приложение, которое затем попросит их войти в систему.
- Я добавил правило auth0, чтобы установить email_verified = true при первом сбросе логина / пароля (это был один из стандартных вариантов)
}
if (user.email_verified || !user.last_password_reset) {
return callback(null, user, context);
}
// Set email verified if a user has already updated his/her password
request.patch({
url: userApiUrl + user.user_id,
headers: {
Authorization: 'Bearer ' + auth0.accessToken
},
json: { email_verified: true },
timeout: 5000
},
function(err, response, body) {
// Setting email verified isn't propagated to id_token in this
// authentication cycle so explicitly set it to true given no errors.
context.idToken.email_verified = (!err && response.statusCode === 200);
// Return with success at this point.
return callback(null, user, context);
});
}
В следующий раз, когда нам нужно будет отправить им электронное письмо для сброса пароля, оно будет использовать вариант шаблона «существующий пользователь».
Ссылка для сброса пароля по электронной почте с приглашением имеет настраиваемый TTL - по умолчанию он равен 5 дням. Поэтому, если они не примут приглашение, в конечном итоге истечет время ожидания (и мы могли бы отправить им еще одно при необходимости).
Лучше всего создать свою собственную страницу входа в систему ( https://next-auth.js.org/configuration/pages), где вы затем сможете добавить желаемую функцию «сброса пароля».