import type { Handle } from '@sveltejs/kit'; import { building } from '$app/environment'; import { auth } from '$lib/server/auth'; import { db } from '$lib/server/db'; import { eq } from 'drizzle-orm'; import { user as userTable } from '$lib/server/db/auth.schema'; import { svelteKitHandler } from 'better-auth/svelte-kit'; const handleBetterAuth: Handle = async ({ event, resolve }) => { const session = await auth.api.getSession({ headers: event.request.headers }); if (session) { event.locals.session = session.session; event.locals.user = session.user; // Fetch the isAdmin field from the database const dbUser = await db.select({ isAdmin: userTable.isAdmin }).from(userTable).where(eq(userTable.id, session.user.id)).limit(1); if (dbUser.length > 0) { (event.locals.user as any).isAdmin = dbUser[0].isAdmin; } } return svelteKitHandler({ event, resolve, auth, building }); }; export const handle: Handle = handleBetterAuth;