omnidash/src/hooks.server.ts

36 lines
1.1 KiB
TypeScript

import { type Handle } from '@sveltejs/kit';
import PocketBase from 'pocketbase';
import { building, dev } from '$app/environment';
import { SERVER_PB } from '$env/static/private';
export const handle: Handle = async ({ event, resolve }) => {
event.locals.id = '';
event.locals.email = '';
event.locals.pocketBase = new PocketBase(SERVER_PB);
const isAuth: boolean = event.url.pathname === '/auth';
if (isAuth || building) {
event.cookies.set('pb_auth', '', { path: '/' });
return await resolve(event);
}
const pb_auth = event.request.headers.get('cookie') ?? '';
event.locals.pocketBase.authStore.loadFromCookie(pb_auth);
try {
const auth = await event.locals.pocketBase
.collection('users')
.authRefresh<{ id: string; email: string }>();
event.locals.id = auth.record.id;
event.locals.email = auth.record.email;
} catch (_) {
event.locals.pocketBase.authStore.clear();
}
const response = await resolve(event);
const cookie = event.locals.pocketBase.authStore.exportToCookie({
secure: !dev,
sameSite: 'lax'
});
response.headers.append('set-cookie', cookie);
return response;
};