40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
import type { Handle } from '@sveltejs/kit';
|
|
import * as auth from '$lib/server/auth.js';
|
|
import { dev } from '$app/environment';
|
|
import { db } from '$lib/server/db';
|
|
import type { ServerInit } from '@sveltejs/kit';
|
|
import { migrate } from 'drizzle-orm/bun-sqlite/migrator';
|
|
|
|
export const init: ServerInit = async () => {
|
|
if (!dev) {
|
|
try {
|
|
migrate(db, { migrationsFolder: 'drizzle' });
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
}
|
|
};
|
|
|
|
const handleAuth: Handle = async ({ event, resolve }) => {
|
|
const sessionToken = event.cookies.get(auth.sessionCookieName);
|
|
if (!sessionToken) {
|
|
event.locals.user = null;
|
|
event.locals.session = null;
|
|
return resolve(event);
|
|
}
|
|
|
|
const { session, user } = await auth.validateSessionToken(sessionToken);
|
|
if (session) {
|
|
auth.setSessionTokenCookie(event, sessionToken, session.expiresAt);
|
|
} else {
|
|
auth.deleteSessionTokenCookie(event);
|
|
}
|
|
|
|
event.locals.user = user;
|
|
event.locals.session = session;
|
|
|
|
return resolve(event);
|
|
};
|
|
|
|
export const handle: Handle = handleAuth;
|