59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
// Script para diagnosticar localStorage e limpar tokens expirados
|
|
console.log("\n========== DIAGNÓSTICO LOCALSTORAGE ==========");
|
|
|
|
const keys = ["authToken", "token", "refreshToken", "authUser", "appSession"];
|
|
keys.forEach((k) => {
|
|
const val = localStorage.getItem(k);
|
|
if (val) {
|
|
console.log(
|
|
`${k}:`,
|
|
val.length > 100 ? val.substring(0, 100) + "..." : val
|
|
);
|
|
} else {
|
|
console.log(`${k}: (ausente)`);
|
|
}
|
|
});
|
|
|
|
// Decode JWT se existir
|
|
function decodeJwt(token: string | null): {
|
|
valid: boolean;
|
|
payload?: { exp?: number; role?: string; sub?: string };
|
|
expired?: boolean;
|
|
} {
|
|
if (!token) return { valid: false };
|
|
try {
|
|
const parts = token.split(".");
|
|
if (parts.length !== 3) return { valid: false };
|
|
const payload = JSON.parse(atob(parts[1]));
|
|
const now = Math.floor(Date.now() / 1000);
|
|
const expired = payload.exp ? payload.exp < now : false;
|
|
return { valid: true, payload, expired };
|
|
} catch {
|
|
return { valid: false };
|
|
}
|
|
}
|
|
|
|
const tok = localStorage.getItem("authToken") || localStorage.getItem("token");
|
|
if (tok) {
|
|
const decoded = decodeJwt(tok);
|
|
console.log("\n[Decode token]", decoded);
|
|
if (decoded.expired) {
|
|
console.warn("⚠️ Token expirado! Limpando...");
|
|
localStorage.removeItem("authToken");
|
|
localStorage.removeItem("token");
|
|
localStorage.removeItem("refreshToken");
|
|
localStorage.removeItem("authUser");
|
|
console.log(
|
|
"✅ Tokens removidos. Recarregue a página e faça login novamente."
|
|
);
|
|
} else {
|
|
console.log("✅ Token ainda válido.");
|
|
}
|
|
} else {
|
|
console.log(
|
|
"\n[Diagnóstico] Nenhum authToken encontrado. Usuário não autenticado."
|
|
);
|
|
}
|
|
|
|
console.log("==============================================\n");
|