diff --git a/src/auth/tokenStore.ts b/src/auth/tokenStore.ts index a4b867e..376c70b 100644 --- a/src/auth/tokenStore.ts +++ b/src/auth/tokenStore.ts @@ -64,6 +64,7 @@ export function extractTokensFromResponsePayload(payload: any): StoredTokens | n tokenContainer?.accessToken ?? tokenContainer?.token ?? tokenContainer?.access ?? + tokenContainer?.jwt ?? null; const refresh = diff --git a/src/config/config.ts b/src/config/config.ts index b2f63f0..9c20bea 100644 --- a/src/config/config.ts +++ b/src/config/config.ts @@ -55,14 +55,15 @@ api.interceptors.request.use((config: any) => { function isAuthTokenExpiredMessage(message: string): boolean { const normalized = message.trim().toLowerCase() if (!normalized) return false + // Be specific: don't match general "unauthorized" or "access denied" which could be 403. + // Match only messages clearly indicating token expiration or invalidity. return ( normalized.includes("invalid or expired jwt") || normalized.includes("jwt expired") || normalized.includes("token expired") || normalized.includes("invalid token") || normalized.includes("expired token") || - normalized.includes("unauthorized") || - normalized.includes("access denied") || + normalized.includes("token is invalid") || normalized.includes("not authenticated") ) } @@ -158,7 +159,10 @@ async function performRefreshAndRetry(originalRequest: any): Promise