consume method

  1. @override
Future<AuthVerificationToken?> consume(
  1. String identifier,
  2. String token
)
override

Implementation

@override
Future<AuthVerificationToken?> consume(
  String identifier,
  String token,
) async {
  if (identifier.isEmpty || token.isEmpty) {
    return null;
  }
  final now = _clock();
  _removeExpired(now);
  final byDigest = _tokens[identifier];
  if (byDigest == null) {
    return null;
  }
  final stored = byDigest.remove(hashOpaqueToken(token));
  if (byDigest.isEmpty) {
    _tokens.remove(identifier);
  }
  if (stored == null || !now.isBefore(stored.expiresAt)) {
    return null;
  }
  return AuthVerificationToken(
    identifier: identifier,
    token: token,
    expiresAt: stored.expiresAt,
    metadata: stored.metadata,
  );
}