package httpserver import ( "context" "net/http" "github.com/tim/cairnquire/apps/server/internal/auth" ) type authContextKey struct{} func withPrincipal(ctx context.Context, principal auth.Principal) context.Context { return context.WithValue(ctx, authContextKey{}, principal) } func principalFromContext(ctx context.Context) (auth.Principal, bool) { principal, ok := ctx.Value(authContextKey{}).(auth.Principal) return principal, ok } func requirePrincipal(r *http.Request) (auth.Principal, bool) { return principalFromContext(r.Context()) }