aboutsummaryrefslogtreecommitdiff
path: root/src/hooks.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/hooks.ts')
-rw-r--r--src/hooks.ts24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/hooks.ts b/src/hooks.ts
new file mode 100644
index 0000000..d767555
--- /dev/null
+++ b/src/hooks.ts
@@ -0,0 +1,24 @@
+import cookie from 'cookie';
+import { v4 as uuid } from '@lukeed/uuid';
+import type { Handle } from '@sveltejs/kit';
+
+export const handle: Handle = async ({ event, resolve }) => {
+ const cookies = cookie.parse(event.request.headers.get('cookie') || '');
+ event.locals.userid = cookies.userid || uuid();
+
+ const response = await resolve(event);
+
+ if (!cookies.userid) {
+ // if this is the first time the user has visited this app,
+ // set a cookie so that we recognise them when they return
+ response.headers.set(
+ 'set-cookie',
+ cookie.serialize('userid', event.locals.userid, {
+ path: '/',
+ httpOnly: true
+ })
+ );
+ }
+
+ return response;
+};