From f75a42af9ac42150f92e4398460139d3888a8dd2 Mon Sep 17 00:00:00 2001 From: "vluk@2fi-solutions.com.hk" Date: Wed, 28 Oct 2026 21:23:21 +0800 Subject: [PATCH] fix atob() --- src/components/RefreshTokenProvider.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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");