aboutsummaryrefslogtreecommitdiffstats
path: root/src/hooks
diff options
context:
space:
mode:
Diffstat (limited to 'src/hooks')
-rw-r--r--src/hooks/index.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/hooks/index.js b/src/hooks/index.js
new file mode 100644
index 00000000..2284d88d
--- /dev/null
+++ b/src/hooks/index.js
@@ -0,0 +1,25 @@
+import cookie from 'cookie';
+import { get } from '$lib/utils';
+import { protectedRoutes } from '$lib/utils';
+
+export async function handle({ event, resolve }) {
+ let {
+ params,
+ request: { headers }
+ } = event;
+
+ const cookies = cookie.parse(headers.get('cookie') || '');
+ let { token } = cookies;
+ event.locals = { token };
+
+ if (protectedRoutes.find((p) => event.url.pathname.match(p))) {
+ let user = await get('/me', { accept: 'application/json', authorization: `Bearer ${token}` });
+ if (user.username !== params.username) throw new Error('user not found');
+ }
+
+ return resolve(event);
+}
+
+export const getSession = ({ locals: { token } }) => {
+ return { token };
+};