import { Elysia } from 'elysia'; import { auth, type User } from '../lib/auth'; /** * Auth middleware plugin - adds `user` to the Elysia context. * Import and `.use(authMiddleware)` in route files that need authentication. */ export const authMiddleware = new Elysia({ name: 'auth-middleware' }) .derive({ as: 'scoped' }, async ({ request, set }): Promise<{ user: User }> => { const session = await auth.api.getSession({ headers: request.headers, }); if (!session?.user) { set.status = 401; throw new Error('Unauthorized'); } return { user: session.user as User }; });