From 5d01855b127d59eaa616c569c70f852e26dc54b1 Mon Sep 17 00:00:00 2001 From: Sandip Date: Mon, 19 Jan 2026 16:43:30 +0545 Subject: [PATCH] Fixes in Development Login --- src/core/app/api.ts | 57 +++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/src/core/app/api.ts b/src/core/app/api.ts index a5083f2..c7be4a2 100644 --- a/src/core/app/api.ts +++ b/src/core/app/api.ts @@ -4,7 +4,6 @@ import { storeToRefs } from "pinia"; import { auth } from "./endpoints"; import { isDevelopment } from "../utils/common.util"; import jwtServices from "./jwt"; -import router from "@/router"; const apiURL: string = DOLPHIN.config.API_BASE_URL; @@ -32,50 +31,46 @@ api.interceptors.request.use( ); api.interceptors.response.use( - function (response) { - return response; - }, - async function (error) { - const { - config, - response: { status }, - } = error; - const originalRequest = config; + (response) => response, + async (error) => { + const originalRequest = error.config; + if (!error.response) { + return Promise.reject(error); + } + + const status = error.response.status; const authStore = useAuth(); const { isAuthenticated } = storeToRefs(authStore); + + if (status === 401 && originalRequest.url === auth.tokenRefresh) { + jwtServices.destroyToken(); + isAuthenticated.value = false; + return Promise.reject(error); + } + if (status === 401 && !originalRequest._retry) { originalRequest._retry = true; try { let data = {}; if (isDevelopment()) { const refreshToken = jwtServices.getRefreshToken(); - data = { - refresh: refreshToken, - }; + if (!refreshToken) throw new Error("No refresh token"); + data = { refresh: refreshToken }; } - await api - .post(auth.tokenRefresh, data, { - withCredentials: true, - }) - .then((response) => { - if (isDevelopment()) { - const token = response.data.access; - jwtServices.setToken(token); - originalRequest.headers["Authorization"] = `Bearer ${token}`; - } - }); - isAuthenticated.value = true; + await api.post(auth.tokenRefresh, data).then((response) => { + if (isDevelopment()) { + const token = response.data.access; + jwtServices.setToken(token); + originalRequest.headers["Authorization"] = `Bearer ${token}`; + } + isAuthenticated.value = true; + }); return await axios(originalRequest); } catch (e) { console.error("Token refresh failed", e); isAuthenticated.value = false; - throw e; - } - } else if (status === 401 && originalRequest._retry) { - isAuthenticated.value = false; - router.push({ name: "login" }); - if (isDevelopment()) { jwtServices.destroyToken(); + throw e; } } return Promise.reject(error);