From 9d26295c65d2c68ae5012bea1b20ea7e45e93325 Mon Sep 17 00:00:00 2001 From: memdmp Date: Sun, 21 Sep 2025 01:13:25 +0000 Subject: feat: misc changes before hopefully actually starting --- src/app.d.ts | 2 +- src/hooks.server.ts | 14 +++++++++- src/routes/+layout.svelte | 6 ++++- src/routes/api/v1/vms/list/+server.ts | 12 +++++++++ src/routes/api/v1/whoami/+server.ts | 40 ++++++++++++++++++++++++++--- src/routes/aup/+page.svelte | 3 ++- src/routes/scope-prompt/[scopes]/+server.ts | 6 ++++- src/routes/vms/+page.ts | 5 ++++ 8 files changed, 80 insertions(+), 8 deletions(-) create mode 100644 src/routes/api/v1/vms/list/+server.ts create mode 100644 src/routes/vms/+page.ts diff --git a/src/app.d.ts b/src/app.d.ts index 4f96a65..8d25cc0 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -8,7 +8,7 @@ declare global { // interface Error {} interface Locals { /** - * Undefined: not authorized + * Undefined: not authenticated * Null: failed to validate/renew token */ auth: () => Promise; diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 05b8b18..4c11926 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -12,6 +12,16 @@ export const authHandler = ( let refreshToken = event.cookies.get('oid__refresh_token'); let accessToken = event.cookies.get('oid__access_token'); let expiry = Number(event.cookies.get('oid__expires_at')); + let tokenSource = accessToken ? 'cookie' : 'none'; + if (!accessToken) { + const auth = event.request.headers.get('Authorization'); + if (auth) { + if (auth.startsWith('Bearer')) { + accessToken = auth.substring(6).trimStart(); + tokenSource = 'header/bearer'; + } + } + } if ( refreshToken && (!accessToken || isNaN(expiry) || expiry - 60 * 1000 >= Date.now()) @@ -41,6 +51,7 @@ export const authHandler = ( auth.unsetCookies(event.cookies); return null; } + expiry = expiry ?? introspectionResponse.exp; return { tokens: { scope: introspectionResponse.scope, @@ -57,7 +68,8 @@ export const authHandler = ( auth.unsetCookies(event.cookies); throw e; }), - __is_session: 1, + __isSession: 1, + __tokenSource: tokenSource, }; } catch (error) { return null; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 61bd14e..c8e4917 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -14,7 +14,11 @@