recordAttempt method
Records an attempt for the given nonce.
nonce is the unique identifier for the request (e.g., email, request ID, token).
extraData is optional additional data to log with the attempt.
Implementation
@override
Future<void> recordAttempt(
final Session session, {
required final T nonce,
final Map<String, String>? extraData,
final Transaction? transaction,
}) async {
final combinedExtraData = {...?config.defaultExtraData, ...?extraData};
final attempt = RateLimitedRequestAttempt(
domain: config.domain,
source: config.source,
nonce: config.nonceToString(nonce),
ipAddress: session.remoteIpAddress.toString(),
attemptedAt: clock.now(),
extraData: combinedExtraData.isNotEmpty ? combinedExtraData : null,
);
await RateLimitedRequestAttempt.db.insertRow(
session,
attempt,
transaction: transaction,
);
}