auth: evitar loop login<->dashboard para sessão de máquina\n\n- Login direciona máquina para portal (ou dashboard se manager)\n- Middleware redireciona máquina colaborador do dashboard para /portal/tickets\n- Middleware evita mostrar login quando já autenticado como máquina
This commit is contained in:
parent
f2e25dfe4d
commit
05ffdf7876
2 changed files with 29 additions and 1 deletions
|
|
@ -34,6 +34,24 @@ export async function middleware(request: NextRequest) {
|
|||
}
|
||||
|
||||
const role = (session.user as { role?: string })?.role?.toLowerCase() ?? "agent"
|
||||
const machinePersona =
|
||||
role === "machine"
|
||||
? ((session.user as unknown as { machinePersona?: string }).machinePersona ?? "").toLowerCase()
|
||||
: null
|
||||
|
||||
// Ajusta destinos conforme persona da máquina para evitar loops login<->dashboard
|
||||
if (role === "machine") {
|
||||
// Evita enviar colaborador ao dashboard; redireciona para o Portal
|
||||
if (pathname.startsWith("/dashboard") && machinePersona !== "manager") {
|
||||
return NextResponse.redirect(new URL("/portal/tickets", request.url))
|
||||
}
|
||||
// Evita mostrar login quando já há sessão de máquina
|
||||
if (pathname === "/login") {
|
||||
const target = machinePersona === "manager" ? "/dashboard" : "/portal/tickets"
|
||||
const url = new URL(target, request.url)
|
||||
return NextResponse.redirect(url)
|
||||
}
|
||||
}
|
||||
|
||||
const isAdmin = role === "admin"
|
||||
// Em desenvolvimento, evitamos bloquear rotas admin por possíveis diferenças
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue