Files
aktiteil/src/lib/server/session.ts
T
2026-04-03 17:27:09 +02:00

41 lines
1.1 KiB
TypeScript

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<Session | null>;
};
}
export async function ensureAuth(event: Event): Promise<Session['user']> {
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 } };
}