white c letter with a black background

constt

Pocketbase Sveltekit Hooks

hooks.server.ts for Pocketbase using SvelteKit

Tags:

svelte

typescript

pocketbase

pb

hooks

import PocketBase from 'pocketbase';
import { sequence } from '@sveltejs/kit/hooks';
import { POCKETBASE_URL } from '$env/static/private';

/** @type {import('@sveltejs/kit').Handle} */
export async function pocketbase({ event, resolve }) {
	event.locals.pb = new PocketBase(POCKETBASE_URL);
	event.locals.pb.authStore.loadFromCookie(event.request.headers.get('cookie') || '');
	try {
		event.locals.pb.authStore.isValid && (await event.locals.pb.collection('users').authRefresh());
		console.log('Auth is valid:', event.locals.pb.authStore.isValid); // Debugging
		event.locals.user = structuredClone(event.locals.pb.authStore.model);
	} catch (_) {
		console.error('AuthRefresh failed:', _); // Debugging
		event.locals.pb.authStore.clear();
		event.locals.user = null;
	}
	const response = await resolve(event);
	response.headers.append('set-cookie', event.locals.pb.authStore.exportToCookie());
	return response;
}

export const handle = sequence(pocketbase);