From fcce8ba86db6cc26517f5b4494fdd2454f481bd9 Mon Sep 17 00:00:00 2001 From: Jake Kasper Date: Thu, 4 Sep 2025 07:36:07 -0500 Subject: [PATCH] asdfasdf --- frontend/src/services/api.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/frontend/src/services/api.js b/frontend/src/services/api.js index e484ef8..4ce4f84 100644 --- a/frontend/src/services/api.js +++ b/frontend/src/services/api.js @@ -41,17 +41,27 @@ apiClient.interceptors.request.use( ); // Response interceptor for error handling +let redirectingToLogin = false; apiClient.interceptors.response.use( (response) => response, (error) => { // Handle specific error codes if (error.response?.status === 401 || error.response?.status === 403) { // Unauthorized or malformed token - clear token and redirect to login - console.log('Clearing invalid token due to auth error:', error.response?.status); - localStorage.removeItem('authToken'); - // Use React Router navigation instead of hard redirect - if (window.location.pathname !== '/login' && window.location.pathname !== '/register') { - window.location.href = '/login'; + const reqUrl = error.config?.url || ''; + const isPublicAuthCheck = reqUrl.includes('/auth/registration-status'); + const onAuthPage = ['/login','/register'].includes(window.location.pathname); + if (!isPublicAuthCheck) { + console.log('Clearing invalid token due to auth error:', error.response?.status, 'on', reqUrl); + localStorage.removeItem('authToken'); + if (!onAuthPage && !redirectingToLogin) { + redirectingToLogin = true; + try { + window.location.href = '/login'; + } finally { + setTimeout(()=>{ redirectingToLogin = false; }, 1500); + } + } } } else if (error.response?.status >= 500) { // Server error