import type { Session } from '@auth/sveltekit'; import { error } from '@sveltejs/kit'; import { db } from './db'; import { users } from './db/schema'; import { eq } from 'drizzle-orm'; interface Event { locals: { auth(): Promise; }; } export async function ensureAuth(event: Event): Promise { const session = await getSession(event); if (!session) error(401, { message: 'Du muesch di zersch iiloge' }); const user = session.user; if (!user || !user.email || !user.id) { error(401, { message: 'Du muesch di zersch iiloge' }); } return user; } export async function getSession(event: Event) { const session = await event.locals.auth(); if (!session) return null; if (!session.user) error(403, { message: 'Di gits garnid. Vilich nomau usloge u iiloge?' }); if (!session?.user?.email) return null; const res = await db .select({ id: users.id }) .from(users) .limit(1) .where(eq(users.email, session.user.email)); if (!res[0]?.id) { error(403, { message: 'Di gits garnid. Vilich nomau usloge u iiloge?' }); } return { expires: session.expires, user: { ...session.user, id: res[0].id } }; }