Authentication¶
The Auth module wraps IUserContext as a composable effect, providing access to the current authenticated user. The default StubUserContext returns a fixed test user for development; production providers resolve from HTTP context, JWT tokens, or Supabase GoTrue.
Quick Start¶
Interface¶
public interface IUserContext
{
Task<UserClaims> GetCurrentUser();
Task<UserClaims?> GetCurrentUserOrNull();
}
public sealed record UserClaims(string UserId, string Email, string Name);
Default Implementation¶
StubUserContext is [DevelopmentOnly] and returns a fixed user (dev-user / dev@localhost). Registered as scoped via TryAddScoped.
Production Providers¶
| Provider | Registration | IUserContext Implementation |
|---|---|---|
| JWT + Google OAuth | services.AddDeepstagingAuth(jwt => ..., google => ...) |
HttpContextUserContext (from JWT claims) |
| Supabase GoTrue | options.AddSupabaseAuth() |
Supabase session-backed |
Effects Composition¶
AuthModule wraps IUserContext. Integrates with Dispatch authorization — [Authorize] on handlers uses IUserContext for policy evaluation.