From 9dc53d1dbae9be9c9087e02b9dc1d49163e70ea0 Mon Sep 17 00:00:00 2001 From: Vaibhav Surve Date: Sat, 19 Apr 2025 17:51:53 +0530 Subject: [PATCH] Refactor token validation and refresh logic in ProtectedRoute component --- src/router/ProtectedRoute.jsx | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/router/ProtectedRoute.jsx b/src/router/ProtectedRoute.jsx index 23d23fec..a1879e85 100644 --- a/src/router/ProtectedRoute.jsx +++ b/src/router/ProtectedRoute.jsx @@ -41,31 +41,32 @@ const isTokenExpired = (token) => { // Function to validate and refresh the token if expired export const validateToken = async () => { 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)) { - const refreshed = await refreshToken(); - return refreshed; + return await attemptTokenRefresh(refreshTokenStored); } return true; }; -// Function to refresh the access token -const refreshToken = async () => { +// Attempt to refresh the access token +const attemptTokenRefresh = async (storedRefreshToken) => { try { - AuthRepository.refreshToken({ + const response = await AuthRepository.refreshToken({ token: localStorage.getItem("jwtToken"), - refreshToken: refreshToken, - }) - .then((response) => { - localStorage.setItem("jwtToken", response.data.token); - localStorage.setItem("refreshToken", response.data.refreshToken); - return true; - }) - .catch((error) => { - console.error("Token refresh failed:", error); - }); + refreshToken: storedRefreshToken, + }); - // api + localStorage.setItem("jwtToken", response.data.token); + localStorage.setItem("refreshToken", response.data.refreshToken); + return true; + // api // .post("/api/auth/refresh-token", { // token: localStorage.getItem("jwtToken"), // refreshToken: refreshToken, @@ -92,8 +93,8 @@ const refreshToken = async () => { // } } catch (error) { console.error("Token refresh failed:", error); + return false; } - return false; }; export default ProtectedRoute;