diff --git a/src/components/RefreshTokenProvider.js b/src/components/RefreshTokenProvider.js index c1485a3e..148eb11b 100644 --- a/src/components/RefreshTokenProvider.js +++ b/src/components/RefreshTokenProvider.js @@ -48,7 +48,18 @@ const RefreshTokenProvider = ({ children }) => { const checkTokenExpiry = useCallback(() => { // Check if token is present and its expiry time if (token.current) { - const tokenExp = JSON.parse(atob(token.current.split('.')[1])).exp; + let tokenExp; + try { + // JWT payload is base64url; atob needs standard base64 + let payload = token.current.split('.')[1] + .replace(/-/g, '+') + .replace(/_/g, '/'); + payload += '='.repeat((4 - (payload.length % 4)) % 4); + tokenExp = JSON.parse(atob(payload)).exp; + } catch (e) { + token.current = null; + return; + } const currentTime = Math.floor(Date.now() / 1000); const expiryTime = tokenExp - 30; // Refresh 30 seconds before expiry // console.log("check refresh Token");