fix: remover setTimeout do magic link redirect para evitar race condition com ProtectedRoute
This commit is contained in:
parent
e70d8a654f
commit
c5461858b0
@ -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");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user