prepareAuthEmailVerificationPayload function
AuthEmailVerificationPayload
prepareAuthEmailVerificationPayload({
- required AuthMagicLinkProvider provider,
- required String email,
- required String callbackUrl,
- required AuthSessionStrategy sessionStrategy,
- String generateToken()?,
- DateTime? now,
Prepares token, request, and pending session payloads for email sign-in.
Implementation
AuthEmailVerificationPayload prepareAuthEmailVerificationPayload({
required AuthMagicLinkProvider provider,
required String email,
required String callbackUrl,
required AuthSessionStrategy sessionStrategy,
String Function()? generateToken,
DateTime? now,
}) {
final normalizedEmail = normalizeAuthOneTimeEmail(email);
final tokenGenerator = provider.tokenGenerator ?? generateToken;
final token = tokenGenerator?.call() ?? secureRandomToken();
if (token.trim().isEmpty) {
throw ArgumentError.value(
token,
'token',
'must be non-empty when generated for email verification',
);
}
final current = now ?? DateTime.now();
final expiresAt = current.add(provider.tokenExpiry);
final request = AuthEmailRequest(
email: normalizedEmail,
token: token,
callbackUrl: callbackUrl,
expiresAt: expiresAt,
);
final session = AuthSession(
user: AuthUser(id: '', email: normalizedEmail),
expiresAt: expiresAt,
strategy: sessionStrategy,
);
return AuthEmailVerificationPayload(
token: token,
expiresAt: expiresAt,
record: AuthMagicLinkRecord(
providerId: provider.id,
email: normalizedEmail,
tokenHash: hashOpaqueToken(token),
issuedAt: current,
expiresAt: expiresAt,
),
request: request,
pendingResult: AuthResult(user: session.user, session: session),
);
}