buildAuthPasswordResetToken function
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),
);
}