From aeaa3c903f6149aaaaa7f1b35a16d2444e169ed9 Mon Sep 17 00:00:00 2001 From: deyvisonwanderley Date: Sat, 22 Nov 2025 22:25:40 -0300 Subject: [PATCH] feat: implement user authentication checks in PresenceManager and perfil pages - Added authentication verification in the PresenceManager component to manage user presence status based on authentication state. - Updated the perfil page to conditionally execute queries only if the user is authenticated, enhancing security and performance. - Introduced derived variables to track user authentication status, ensuring that presence management and data fetching are only performed for logged-in users. --- .../components/chat/PresenceManager.svelte | 39 +++++++++++++++---- .../routes/(dashboard)/perfil/+page.svelte | 20 ++++++++-- 2 files changed, 48 insertions(+), 11 deletions(-) diff --git a/apps/web/src/lib/components/chat/PresenceManager.svelte b/apps/web/src/lib/components/chat/PresenceManager.svelte index cb26218..7c84e6b 100644 --- a/apps/web/src/lib/components/chat/PresenceManager.svelte +++ b/apps/web/src/lib/components/chat/PresenceManager.svelte @@ -1,10 +1,15 @@ - diff --git a/apps/web/src/routes/(dashboard)/perfil/+page.svelte b/apps/web/src/routes/(dashboard)/perfil/+page.svelte index b9c4a02..a93655c 100644 --- a/apps/web/src/routes/(dashboard)/perfil/+page.svelte +++ b/apps/web/src/routes/(dashboard)/perfil/+page.svelte @@ -125,11 +125,23 @@ const funcionarioIdDisponivel = $derived(currentUser?.data?.funcionarioId ?? null); const gestorIdDisponivel = $derived(currentUser?.data?._id ?? null); - // ✅ CORRIGIDO: Queries no nível superior (sem argumentos) sempre criadas + // Verificar autenticação antes de executar queries + const usuarioAutenticado = $derived(currentUser?.data !== null && currentUser?.data !== undefined); + + // ✅ CORRIGIDO: Queries condicionais - só executar se usuário estiver autenticado // Queries que não requerem argumentos são criadas uma vez - const funcionarioQuery = useQuery(api.funcionarios.getCurrent, {}); - const timesSubordinadosQuery = useQuery(api.times.listarSubordinadosDoGestorAtual, {}); - const chamadosQuery = useQuery(api.chamados.listarChamadosUsuario, {}); + const funcionarioQuery = useQuery( + api.funcionarios.getCurrent, + usuarioAutenticado ? {} : 'skip' + ); + const timesSubordinadosQuery = useQuery( + api.times.listarSubordinadosDoGestorAtual, + usuarioAutenticado ? {} : 'skip' + ); + const chamadosQuery = useQuery( + api.chamados.listarChamadosUsuario, + usuarioAutenticado ? {} : 'skip' + ); // ✅ CORRIGIDO: Queries com argumentos obrigatórios usando $derived.by para estabilidade // Usamos uma chave estável baseada no ID para evitar recriação desnecessária