From 682d39db70089e688b51666f0716824a460003a5 Mon Sep 17 00:00:00 2001 From: Esdras Renan Date: Tue, 14 Oct 2025 11:22:01 -0300 Subject: [PATCH] =?UTF-8?q?desktop/machines:=20liberar=20handshake=20e=20o?= =?UTF-8?q?cultar=20'Sair'=20em=20sess=C3=A3o=20de=20m=C3=A1quina?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - middleware: torna /machines/handshake público para permitir criação de sessão de máquina sem login prévio - nav-user: oculta botão 'Encerrar sessão' quando a sessão é de máquina (role === 'machine') Efeito: no app desktop (Tauri), o handshake passa a autenticar corretamente, o cabeçalho exibe nome/e-mail do colaborador/gestor e o portal permite abrir chamados. Nota: em navegação web comum, 'Sair' permanece visível para usuários humanos. --- middleware.ts | 3 ++- src/components/nav-user.tsx | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/middleware.ts b/middleware.ts index e9e0e6a..295f089 100644 --- a/middleware.ts +++ b/middleware.ts @@ -2,7 +2,8 @@ import { NextRequest, NextResponse } from "next/server" import { getCookieCache } from "better-auth/cookies" // Rotas públicas explícitas (não autenticadas) -const PUBLIC_PATHS = [/^\/login$/] +// Permite handshake de máquina sem sessão prévia para criar a sessão de máquina. +const PUBLIC_PATHS = [/^\/login$/, /^\/machines\/handshake$/] // Rotas somente admin const ADMIN_ONLY_PATHS = [/^\/admin(?:$|\/)/] const APP_HOME = "/dashboard" diff --git a/src/components/nav-user.tsx b/src/components/nav-user.tsx index 1acf994..17235b4 100644 --- a/src/components/nav-user.tsx +++ b/src/components/nav-user.tsx @@ -30,7 +30,7 @@ import { SidebarMenuItem, useSidebar, } from "@/components/ui/sidebar" -import { signOut } from "@/lib/auth-client" +import { signOut, useAuth } from "@/lib/auth-client" type NavUserProps = { user?: { @@ -46,6 +46,8 @@ export function NavUser({ user }: NavUserProps) { const router = useRouter() const [isSigningOut, setIsSigningOut] = useState(false) const [isDesktopShell, setIsDesktopShell] = useState(false) + const { session } = useAuth() + const isMachineSession = (session?.user?.role ?? "").toLowerCase() === "machine" useEffect(() => { if (typeof window === "undefined") return @@ -141,7 +143,7 @@ export function NavUser({ user }: NavUserProps) { Notificações (em breve) - {!isDesktopShell ? ( + {!isDesktopShell && !isMachineSession ? ( <>