deletePasswordResetRequests method

Future<void> deletePasswordResetRequests(
  1. Session session, {
  2. required Duration? olderThan,
  3. required UuidValue? emailAccountId,
  4. required Transaction transaction,
})

Deletes password reset requests older than olderThan.

If olderThan is null, this will remove all expired password reset requests, as configured by the EmailIdpConfig.passwordResetVerificationCodeLifetime.

If emailAccountId is provided, only requests for the given email account will be deleted.

Implementation

Future<void> deletePasswordResetRequests(
  final Session session, {
  required Duration? olderThan,
  required final UuidValue? emailAccountId,
  required final Transaction transaction,
}) async {
  olderThan ??= _config.passwordResetVerificationCodeLifetime;

  final lastValidDateTime = clock.now().subtract(olderThan);

  await EmailAccountPasswordResetRequest.db.deleteWhere(
    session,
    where: (final t) {
      var expression = t.createdAt < lastValidDateTime;
      if (emailAccountId != null) {
        expression &= t.emailAccountId.equals(emailAccountId);
      }
      return expression;
    },
    transaction: transaction,
  );
}