fix: skip 401 redirect for auth endpoints to prevent login interference

The API client's 401 handler was intercepting responses from /auth/*
endpoints (login, register, me), throwing "Session expired" before the
actual response could reach the caller. This prevented the login form
from working — the AuthProvider's me() call returned 401, threw, and
the error propagated into the login flow.

Now the 401 redirect only triggers for non-auth API calls (where it
genuinely indicates an expired session). Auth endpoints handle their
own error responses normally.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
master
oabrivard 2 months ago
parent d081c47c7f
commit f8588a57a3

@ -55,11 +55,8 @@ class ApiClient {
}); });
if (!response.ok) { if (!response.ok) {
if (response.status === 401) { if (response.status === 401 && !url.includes('/auth/')) {
const path = window.location.pathname; window.location.href = '/login';
if (path !== '/login' && path !== '/register') {
window.location.href = '/login';
}
throw { status: 401, message: 'Session expired' } satisfies ApiError; throw { status: 401, message: 'Session expired' } satisfies ApiError;
} }

@ -45,10 +45,7 @@ export async function fetchFile(path: string): Promise<Response> {
if (!response.ok) { if (!response.ok) {
if (response.status === 401) { if (response.status === 401) {
const path = window.location.pathname; window.location.href = '/login';
if (path !== '/login' && path !== '/register') {
window.location.href = '/login';
}
} }
const errorBody = await response.json().catch(() => ({ error: 'Unknown error' })); const errorBody = await response.json().catch(() => ({ error: 'Unknown error' }));
throw { throw {

Loading…
Cancel
Save