buildAuthPasswordResetToken function

AuthPasswordResetToken buildAuthPasswordResetToken({
  1. required String userId,
  2. required String token,
  3. required Duration ttl,
  4. DateTime? now,
})

Builds persistable password-reset metadata from a raw delivery token.

Trims userId, hashes token without storing its raw value, and creates UTC timestamps from now plus ttl. Blank values and a non-positive ttl throw an ArgumentError.

Implementation

AuthPasswordResetToken buildAuthPasswordResetToken({
  required String userId,
  required String token,
  required Duration ttl,
  DateTime? now,
}) {
  if (userId.trim().isEmpty) {
    throw ArgumentError.value(userId, 'userId', 'must be non-empty');
  }
  if (token.trim().isEmpty) {
    throw ArgumentError.value(token, 'token', 'must be non-empty');
  }
  if (ttl <= Duration.zero) {
    throw ArgumentError.value(ttl, 'ttl', 'must be greater than zero');
  }
  final createdAt = (now ?? DateTime.now()).toUtc();
  return AuthPasswordResetToken(
    userId: userId.trim(),
    tokenHash: hashOpaqueToken(token),
    createdAt: createdAt,
    expiresAt: createdAt.add(ttl),
  );
}