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,8 +92,6 @@ export default function AuthCallback() {
setMessage("Autenticado com sucesso! Redirecionando..."); setMessage("Autenticado com sucesso! Redirecionando...");
toast.success("Login realizado com sucesso!"); 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 // Verificar se há redirecionamento salvo do magic link
const savedRedirect = localStorage.getItem("magic_link_redirect"); const savedRedirect = localStorage.getItem("magic_link_redirect");
@ -105,7 +103,9 @@ export default function AuthCallback() {
if (savedRedirect) { if (savedRedirect) {
console.log("[AuthCallback] ✅ Redirecionando para (saved):", savedRedirect); console.log("[AuthCallback] ✅ Redirecionando para (saved):", savedRedirect);
localStorage.removeItem("magic_link_redirect"); // Limpar após uso localStorage.removeItem("magic_link_redirect"); // Limpar após uso
navigate(savedRedirect, { replace: true });
// Usar window.location.href para forçar reload completo e atualizar AuthContext
window.location.href = savedRedirect;
return; return;
} }
@ -113,22 +113,26 @@ export default function AuthCallback() {
const userRole = session.user.user_metadata?.role || "paciente"; const userRole = session.user.user_metadata?.role || "paciente";
console.log("[AuthCallback] ⚠️ Nenhum redirect salvo, usando role:", userRole); console.log("[AuthCallback] ⚠️ Nenhum redirect salvo, usando role:", userRole);
let redirectUrl = "/acompanhamento"; // default paciente
switch (userRole) { switch (userRole) {
case "medico": case "medico":
console.log("[AuthCallback] Navegando para /painel-medico"); console.log("[AuthCallback] Navegando para /painel-medico");
navigate("/painel-medico", { replace: true }); redirectUrl = "/painel-medico";
break; break;
case "secretaria": case "secretaria":
console.log("[AuthCallback] Navegando para /painel-secretaria"); console.log("[AuthCallback] Navegando para /painel-secretaria");
navigate("/painel-secretaria", { replace: true }); redirectUrl = "/painel-secretaria";
break; break;
case "paciente": case "paciente":
default: default:
console.log("[AuthCallback] Navegando para /acompanhamento"); console.log("[AuthCallback] Navegando para /acompanhamento");
navigate("/acompanhamento", { replace: true }); redirectUrl = "/acompanhamento";
break; break;
} }
}, 1500);
// Usar window.location.href para forçar reload completo
window.location.href = redirectUrl;
} catch (err: any) { } catch (err: any) {
console.error("[AuthCallback] Erro:", err); console.error("[AuthCallback] Erro:", err);
setStatus("error"); setStatus("error");