export const AUTH_TOKEN_KEY = "authToken"; export const AUTH_USER_KEY = "authUser"; function decodeJwtPayload(token) { try { const parts = token.split("."); if (parts.length < 2) return null; const base64 = parts[1].replace(/-/g, "+").replace(/_/g, "/"); const normalized = base64.padEnd(Math.ceil(base64.length / 4) * 4, "="); const json = atob(normalized); return JSON.parse(json); } catch { return null; } } export function isTokenExpired(token) { if (!token) return true; const payload = decodeJwtPayload(token); if (!payload || typeof payload.exp !== "number") return true; return payload.exp * 1000 <= Date.now(); } export function getAuthToken() { return localStorage.getItem(AUTH_TOKEN_KEY); } export function clearAuthSession() { localStorage.removeItem(AUTH_TOKEN_KEY); localStorage.removeItem(AUTH_USER_KEY); } export function logoutAndRedirect(path = "/dashboard") { clearAuthSession(); window.location.assign(path); }