馃 distributed transcription service thistle.dunkirk.sh
at v0.1.0 715 B view raw
1// Helper functions for route authentication and error handling 2 3import type { User } from "./auth"; 4import { getSessionFromRequest, getUserBySession } from "./auth"; 5import { AuthErrors } from "./errors"; 6 7export interface AuthenticatedRequest extends Request { 8 user: User; 9} 10 11export function requireAuth(req: Request): User { 12 const sessionId = getSessionFromRequest(req); 13 if (!sessionId) { 14 throw AuthErrors.required(); 15 } 16 17 const user = getUserBySession(sessionId); 18 if (!user) { 19 throw AuthErrors.invalidSession(); 20 } 21 22 return user; 23} 24 25export function requireAdmin(req: Request): User { 26 const user = requireAuth(req); 27 28 if (user.role !== "admin") { 29 throw AuthErrors.adminRequired(); 30 } 31 32 return user; 33}