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), где вы затем сможете добавить желаемую функцию «сброса пароля».

Другие вопросы по тегам