fix: remover setTimeout do magic link redirect para evitar race condition com ProtectedRoute

This commit is contained in:
guisilvagomes 2025-10-29 11:50:23 -03:00
parent e70d8a654f
commit c5461858b0

View File

@ -92,43 +92,47 @@ export default function AuthCallback() {
setMessage("Autenticado com sucesso! Redirecionando...");
toast.success("Login realizado com sucesso!");
// Redirecionar baseado no contexto salvo ou role do usuário
setTimeout(() => {
// Verificar se há redirecionamento salvo do magic link
const savedRedirect = localStorage.getItem("magic_link_redirect");
// Verificar se há redirecionamento salvo do magic link
const savedRedirect = localStorage.getItem("magic_link_redirect");
console.log("[AuthCallback] Verificando redirecionamento:");
console.log(" - magic_link_redirect:", savedRedirect);
console.log(" - user role:", session.user.user_metadata?.role);
console.log(" - localStorage keys:", Object.keys(localStorage));
if (savedRedirect) {
console.log("[AuthCallback] ✅ Redirecionando para (saved):", savedRedirect);
localStorage.removeItem("magic_link_redirect"); // Limpar após uso
console.log("[AuthCallback] Verificando redirecionamento:");
console.log(" - magic_link_redirect:", savedRedirect);
console.log(" - user role:", session.user.user_metadata?.role);
console.log(" - localStorage keys:", Object.keys(localStorage));
if (savedRedirect) {
console.log("[AuthCallback] ✅ Redirecionando para (saved):", savedRedirect);
localStorage.removeItem("magic_link_redirect"); // Limpar após uso
navigate(savedRedirect, { replace: true });
return;
}
// Usar window.location.href para forçar reload completo e atualizar AuthContext
window.location.href = savedRedirect;
return;
}
// Fallback: redirecionar baseado no role
const userRole = session.user.user_metadata?.role || "paciente";
console.log("[AuthCallback] ⚠️ Nenhum redirect salvo, usando role:", userRole);
// Fallback: redirecionar baseado no role
const userRole = session.user.user_metadata?.role || "paciente";
console.log("[AuthCallback] ⚠️ Nenhum redirect salvo, usando role:", userRole);
switch (userRole) {
case "medico":
console.log("[AuthCallback] Navegando para /painel-medico");
navigate("/painel-medico", { replace: true });
break;
case "secretaria":
console.log("[AuthCallback] Navegando para /painel-secretaria");
navigate("/painel-secretaria", { replace: true });
break;
case "paciente":
default:
console.log("[AuthCallback] Navegando para /acompanhamento");
navigate("/acompanhamento", { replace: true });
break;
}
}, 1500);
let redirectUrl = "/acompanhamento"; // default paciente
switch (userRole) {
case "medico":
console.log("[AuthCallback] Navegando para /painel-medico");
redirectUrl = "/painel-medico";
break;
case "secretaria":
console.log("[AuthCallback] Navegando para /painel-secretaria");
redirectUrl = "/painel-secretaria";
break;
case "paciente":
default:
console.log("[AuthCallback] Navegando para /acompanhamento");
redirectUrl = "/acompanhamento";
break;
}
// Usar window.location.href para forçar reload completo
window.location.href = redirectUrl;
} catch (err: any) {
console.error("[AuthCallback] Erro:", err);
setStatus("error");