summaryrefslogtreecommitdiff
path: root/app/src/hooks.server.ts
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/hooks.server.ts')
-rw-r--r--app/src/hooks.server.ts28
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);