refactor(auth): hooks.server.ts re-throws redirects via isRedirect()

Replace the duck-typed `status in error && location in error` check with the
official SvelteKit guard. Fragile against minor-version error-shape changes
becomes a one-liner against a typed helper. Addresses PR #612 / Felix F1.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-05-17 22:45:46 +02:00
parent dd99c5dd74
commit 9f1e2c9ff5

View File

@@ -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);
}