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.
This commit is contained in:
2025-11-22 22:25:40 -03:00
parent 031552c836
commit aeaa3c903f
2 changed files with 48 additions and 11 deletions

View File

@@ -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