diff options
Diffstat (limited to 'src/hooks.server.ts')
| -rw-r--r-- | src/hooks.server.ts | 14 |
1 files changed, 13 insertions, 1 deletions
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; |