mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 17:43:47 +00:00
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.
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user