Refactor token validation and refresh logic in ProtectedRoute component

This commit is contained in:
Vaibhav Surve 2025-04-19 17:51:53 +05:30 committed by Vikas Nale
parent c3faca41e2
commit 9dc53d1dba

View File

@ -41,30 +41,31 @@ const isTokenExpired = (token) => {
// Function to validate and refresh the token if expired // Function to validate and refresh the token if expired
export const validateToken = async () => { export const validateToken = async () => {
const token = localStorage.getItem("jwtToken"); const token = localStorage.getItem("jwtToken");
const refreshTokenStored = localStorage.getItem("refreshToken");
// If refresh token is absent, cannot proceed
if (!refreshTokenStored) {
console.warn("No refresh token available. Redirecting to login.");
return false;
}
// If access token expired, try to refresh
if (isTokenExpired(token)) { if (isTokenExpired(token)) {
const refreshed = await refreshToken(); return await attemptTokenRefresh(refreshTokenStored);
return refreshed;
} }
return true; return true;
}; };
// Function to refresh the access token // Attempt to refresh the access token
const refreshToken = async () => { const attemptTokenRefresh = async (storedRefreshToken) => {
try { try {
AuthRepository.refreshToken({ const response = await AuthRepository.refreshToken({
token: localStorage.getItem("jwtToken"), token: localStorage.getItem("jwtToken"),
refreshToken: refreshToken, refreshToken: storedRefreshToken,
}) });
.then((response) => {
localStorage.setItem("jwtToken", response.data.token); localStorage.setItem("jwtToken", response.data.token);
localStorage.setItem("refreshToken", response.data.refreshToken); localStorage.setItem("refreshToken", response.data.refreshToken);
return true; return true;
})
.catch((error) => {
console.error("Token refresh failed:", error);
});
// api // api
// .post("/api/auth/refresh-token", { // .post("/api/auth/refresh-token", {
// token: localStorage.getItem("jwtToken"), // token: localStorage.getItem("jwtToken"),
@ -92,8 +93,8 @@ const refreshToken = async () => {
// } // }
} catch (error) { } catch (error) {
console.error("Token refresh failed:", error); console.error("Token refresh failed:", error);
}
return false; return false;
}
}; };
export default ProtectedRoute; export default ProtectedRoute;