resolveAuthSessionUpdateForStrategyWithCallbacks<TContext> function
Future<AuthSessionUpdateResolution>
resolveAuthSessionUpdateForStrategyWithCallbacks<TContext>({
- required AuthSessionStrategy strategy,
- required AuthCallbacks<
TContext> callbacks, - required TContext context,
- required AuthPrincipal principal,
- required JwtSessionOptions jwtOptions,
- FutureOr<
void> persistSessionPrincipal(- AuthPrincipal principal
- void applySessionMaxAge()?,
- void writeSessionIssuedAt(
- DateTime issuedAtUtc
- DateTime? resolveSessionExpiry()?,
- Map<
String, dynamic> ? protectedJwtClaims, - DateTime? now,
Resolves updateSession behavior for an auth session strategy.
The session branch invokes applySessionMaxAge, persists the principal,
writes issued-at metadata, and resolves expiry. The JWT branch ignores
session callbacks and delegates issuance to
issueAuthJwtSessionWithCallbacks. Callback and strategy errors propagate.
Session strategy uses callback hooks for framework-specific session writes.
JWT strategy uses issueAuthJwtSessionWithCallbacks and returns the issued auth cookie in AuthSessionUpdateResolution.jwtCookie.
Implementation
Future<AuthSessionUpdateResolution>
resolveAuthSessionUpdateForStrategyWithCallbacks<TContext>({
required AuthSessionStrategy strategy,
required AuthCallbacks<TContext> callbacks,
required TContext context,
required AuthPrincipal principal,
required JwtSessionOptions jwtOptions,
FutureOr<void> Function(AuthPrincipal principal)? persistSessionPrincipal,
void Function()? applySessionMaxAge,
void Function(DateTime issuedAtUtc)? writeSessionIssuedAt,
DateTime? Function()? resolveSessionExpiry,
Map<String, dynamic>? protectedJwtClaims,
DateTime? now,
}) async {
final user = AuthUser.fromPrincipal(principal);
switch (strategy) {
case AuthSessionStrategy.session:
applySessionMaxAge?.call();
if (persistSessionPrincipal != null) {
await Future<void>.value(persistSessionPrincipal(principal));
}
writeSessionIssuedAt?.call((now ?? DateTime.now()).toUtc());
return AuthSessionUpdateResolution(
session: AuthSession(
user: user,
expiresAt: resolveSessionExpiry?.call(),
strategy: AuthSessionStrategy.session,
),
);
case AuthSessionStrategy.jwt:
final issued = await issueAuthJwtSessionWithCallbacks<TContext>(
callbacks: callbacks,
context: context,
options: jwtOptions,
user: user,
protectedClaims: protectedJwtClaims,
);
return AuthSessionUpdateResolution(
session: issued.session,
jwtCookie: issued.issued.cookie,
);
}
}