finishPasswordReset method

Future<UuidValue> finishPasswordReset(
  1. Session session, {
  2. required String finishPasswordResetToken,
  3. required String newPassword,
  4. Transaction? transaction,
})

Completes a password reset request by setting a new password.

The verificationCode returned from verifyPasswordResetCode is used to validate the password reset request.

Throws an EmailAccountPasswordResetException in case of errors, with reason:

Throws an AuthUserBlockedException if the auth user is blocked.

Implementation

Future<UuidValue> finishPasswordReset(
  final Session session, {
  required final String finishPasswordResetToken,
  required final String newPassword,
  final Transaction? transaction,
}) async {
  return DatabaseUtil.runInTransactionOrSavepoint(
    session.db,
    transaction,
    (final transaction) =>
        EmailIdpUtils.withReplacedServerEmailException(() async {
          final authUserId = await utils.passwordReset.completePasswordReset(
            session,
            completePasswordResetToken: finishPasswordResetToken,
            newPassword: newPassword,
            transaction: transaction,
          );

          await _tokenManager.revokeAllTokens(
            session,
            authUserId: authUserId,
            method: method,
            transaction: transaction,
          );

          return authUserId;
        }),
  );
}