diff options
Diffstat (limited to 'app/src/hooks.server.ts')
-rw-r--r-- | app/src/hooks.server.ts | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/app/src/hooks.server.ts b/app/src/hooks.server.ts new file mode 100644 index 0000000..79535f9 --- /dev/null +++ b/app/src/hooks.server.ts @@ -0,0 +1,28 @@ +import { getDbConnection } from "$lib/server/db"; +import { validateSessionToken } from "$lib/server/sessions"; +import { redirect, type Handle } from "@sveltejs/kit"; +import { sequence } from "@sveltejs/kit/hooks"; + +const dbHandle = (async ({ event, resolve }) => { + const dbConn = await getDbConnection(); + event.locals = { dbConn }; + + const response = await resolve(event); + dbConn.release(); + + return response; +}) satisfies Handle; + +const sessionHandle = (async ({ event, resolve }) => { + const sessionToken = event.cookies.get("SESSION_ID"); + if (sessionToken) { + const { user } = await validateSessionToken(event.locals.dbConn, sessionToken); + if (user) { + event.locals.user = user; + } + } + + return resolve(event); +}) satisfies Handle; + +export const handle = sequence(dbHandle, sessionHandle); |