diff --git a/frontend/src/hooks.server.ts b/frontend/src/hooks.server.ts index 5fe167c1..de71e2b9 100644 --- a/frontend/src/hooks.server.ts +++ b/frontend/src/hooks.server.ts @@ -1,5 +1,5 @@ import * as Sentry from '@sentry/sveltekit'; -import { redirect, type Handle, type HandleFetch } from '@sveltejs/kit'; +import { isRedirect, redirect, type Handle, type HandleFetch } from '@sveltejs/kit'; import { paraglideMiddleware } from '$lib/paraglide/server'; import { sequence } from '@sveltejs/kit/hooks'; import { env } from 'process'; @@ -87,10 +87,9 @@ const userGroup: Handle = async ({ event, resolve }) => { } } } catch (error) { - // Don't swallow SvelteKit redirects — they're thrown as objects with a `status` field. - if (error instanceof Object && 'status' in error && 'location' in error) { - throw error; - } + // Re-throw SvelteKit redirects (e.g. the /login?reason=expired throw above) + // using the official guard rather than duck-typing on the error shape. + if (isRedirect(error)) throw error; console.error('Error fetching user in hook:', error); }