Fixed issue where expired sessions showed "Unauthorized User" by implementing token refresh or redirect to login page.

This commit is contained in:
ashutosh.nehete 2025-05-07 13:20:01 +05:30
parent 130fffcc16
commit 12c592b59c

View File

@ -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";
}