From 12c592b59c4db4673e831eaf122033972f52d49c Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Wed, 7 May 2025 13:20:01 +0530 Subject: [PATCH] Fixed issue where expired sessions showed "Unauthorized User" by implementing token refresh or redirect to login page. --- src/utils/axiosClient.jsx | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/utils/axiosClient.jsx b/src/utils/axiosClient.jsx index faa97157..93e96bc5 100644 --- a/src/utils/axiosClient.jsx +++ b/src/utils/axiosClient.jsx @@ -21,8 +21,7 @@ axiosClient.interceptors.request.use( if (token) { config.headers["Authorization"] = `Bearer ${token}`; config._retry = true; - } - else{ + } else { config._retry = false; } } @@ -37,7 +36,6 @@ axiosClient.interceptors.response.use( (response) => response, async (error) => { - const originalRequest = error.config; if (!originalRequest) { @@ -81,17 +79,17 @@ axiosClient.interceptors.response.use( } else if (error.response) { if (error.config.url.indexOf("refresh-token") != -1) { //showToast("Server is unreachable. Try again later!", "error"); - } + } // else { // // showToast(error.response.data.message, "error"); // repeted toast // } - if (error.response.status === 401 && !originalRequest._retry) { + if (error.response.status === 401) { originalRequest._retry = true; try { // Get the refresh token from secure storage const refreshToken = localStorage.getItem("refreshToken"); - if (!refreshToken) { + if (!refreshToken || error.response.data.errors === "Invalid or expired refresh token.") { // Redirect to login if refresh token is not available redirectToLogin(); return Promise.reject(error); @@ -108,7 +106,7 @@ axiosClient.interceptors.response.use( const { token, refreshToken: newRefreshToken } = response.data.data; localStorage.setItem("jwtToken", token); - localStorage.setItem("refreshToken", newRefreshToken); + localStorage.setItem("refreshToken", newRefreshToken); // Retry the original request with the new token originalRequest.headers["Authorization"] = `Bearer ${token}`; @@ -116,7 +114,6 @@ axiosClient.interceptors.response.use( // Retry the original request return axiosClient(originalRequest); } catch (err) { - // Redirect to login if token refresh fails redirectToLogin(); return Promise.reject(err); @@ -192,5 +189,5 @@ export const api = { }; //export default axiosClient; function redirectToLogin() { - // window.location.href = "/auth/login"; + window.location.href = "/auth/login"; }