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...");
|
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
|
// Verificar se há redirecionamento salvo do magic link
|
||||||
setTimeout(() => {
|
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("[AuthCallback] Verificando redirecionamento:");
|
||||||
console.log(" - magic_link_redirect:", savedRedirect);
|
console.log(" - magic_link_redirect:", savedRedirect);
|
||||||
console.log(" - user role:", session.user.user_metadata?.role);
|
console.log(" - user role:", session.user.user_metadata?.role);
|
||||||
console.log(" - localStorage keys:", Object.keys(localStorage));
|
console.log(" - localStorage keys:", Object.keys(localStorage));
|
||||||
|
|
||||||
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 });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fallback: redirecionar baseado no role
|
// Usar window.location.href para forçar reload completo e atualizar AuthContext
|
||||||
const userRole = session.user.user_metadata?.role || "paciente";
|
window.location.href = savedRedirect;
|
||||||
console.log("[AuthCallback] ⚠️ Nenhum redirect salvo, usando role:", userRole);
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
switch (userRole) {
|
// Fallback: redirecionar baseado no role
|
||||||
case "medico":
|
const userRole = session.user.user_metadata?.role || "paciente";
|
||||||
console.log("[AuthCallback] Navegando para /painel-medico");
|
console.log("[AuthCallback] ⚠️ Nenhum redirect salvo, usando role:", userRole);
|
||||||
navigate("/painel-medico", { replace: true });
|
|
||||||
break;
|
let redirectUrl = "/acompanhamento"; // default paciente
|
||||||
case "secretaria":
|
|
||||||
console.log("[AuthCallback] Navegando para /painel-secretaria");
|
switch (userRole) {
|
||||||
navigate("/painel-secretaria", { replace: true });
|
case "medico":
|
||||||
break;
|
console.log("[AuthCallback] Navegando para /painel-medico");
|
||||||
case "paciente":
|
redirectUrl = "/painel-medico";
|
||||||
default:
|
break;
|
||||||
console.log("[AuthCallback] Navegando para /acompanhamento");
|
case "secretaria":
|
||||||
navigate("/acompanhamento", { replace: true });
|
console.log("[AuthCallback] Navegando para /painel-secretaria");
|
||||||
break;
|
redirectUrl = "/painel-secretaria";
|
||||||
}
|
break;
|
||||||
}, 1500);
|
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) {
|
} catch (err: any) {
|
||||||
console.error("[AuthCallback] Erro:", err);
|
console.error("[AuthCallback] Erro:", err);
|
||||||
setStatus("error");
|
setStatus("error");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user