From dc740ae2664059011fd755ccfa96ee46a26196d3 Mon Sep 17 00:00:00 2001 From: Fringg Date: Mon, 9 Mar 2026 21:58:46 +0300 Subject: [PATCH] fix: restore session from refresh token when access token is missing When access token is absent from sessionStorage (tab reopen, page refresh) but refresh token exists in localStorage, the request interceptor now attempts token refresh before sending the request. Previously it would send the request without Authorization header, causing 401 errors on endpoints like /cabinet/auth/email/register. --- src/api/client.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/api/client.ts b/src/api/client.ts index 4e38a3d..e433589 100644 --- a/src/api/client.ts +++ b/src/api/client.ts @@ -92,18 +92,22 @@ apiClient.interceptors.request.use(async (config: InternalAxiosRequestConfig) => if (!isAuthEndpoint(config.url)) { let token = tokenStorage.getAccessToken(); - // Проверяем срок действия токена перед запросом if (token && isTokenExpired(token)) { - // Используем централизованный менеджер для refresh + // Access token expired — try refresh const newToken = await tokenRefreshManager.refreshAccessToken(); if (newToken) { token = newToken; } else { - // Refresh не удался - редирект на логин tokenStorage.clearTokens(); safeRedirectToLogin(); return config; } + } else if (!token && tokenStorage.getRefreshToken()) { + // No access token (e.g. tab reopen) but refresh token exists — restore session + const newToken = await tokenRefreshManager.refreshAccessToken(); + if (newToken) { + token = newToken; + } } if (token && config.headers) {