From 4eb49d3e638f73c818a2a6103669661dde3aba2e Mon Sep 17 00:00:00 2001 From: killer-cf Date: Thu, 11 Dec 2025 17:01:47 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20update=20sidebar=20links=20to=20use=20r?= =?UTF-8?q?esolve=20function=20and=20enhance=20permissions=20structure=20f?= =?UTF-8?q?or=20recursos=20humanos,=20including=20new=20actions=20for=20at?= =?UTF-8?q?estados=20and=20aus=C3=AAncias?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/lib/components/Sidebar.svelte | 62 +++++++--- packages/backend/convex/permissoesAcoes.ts | 127 +++++++++++++++++++-- 2 files changed, 163 insertions(+), 26 deletions(-) diff --git a/apps/web/src/lib/components/Sidebar.svelte b/apps/web/src/lib/components/Sidebar.svelte index ea4bfea..98532a3 100644 --- a/apps/web/src/lib/components/Sidebar.svelte +++ b/apps/web/src/lib/components/Sidebar.svelte @@ -77,27 +77,59 @@ { label: 'Dashboard', icon: 'Home', - link: '/' + link: resolve('/') }, { label: 'Gestão de Pessoas', icon: 'Users', - link: '/recursos-humanos', - permission: { recurso: 'funcionarios', acao: 'ver' }, + link: resolve('/recursos-humanos'), + permission: { recurso: 'gestao_pessoas', acao: 'ver' }, submenus: [ { label: 'Funcionários', - link: '/recursos-humanos/funcionarios', - permission: { recurso: 'funcionarios', acao: 'listar' } + link: resolve('/recursos-humanos/funcionarios'), + permission: { recurso: 'funcionarios', acao: 'listar' }, + exact: true + }, + { + label: 'Cadastro de Funcionários', + link: resolve('/recursos-humanos/funcionarios/cadastro'), + permission: { recurso: 'funcionarios', acao: 'criar' } + }, + { + label: 'Exclusão de Funcionários', + link: resolve('/recursos-humanos/funcionarios/excluir'), + permission: { recurso: 'funcionarios', acao: 'excluir' } + }, + { + label: 'Férias', + link: resolve('/recursos-humanos/ferias'), + permission: { recurso: 'ferias', acao: 'dashboard' } + }, + { + label: 'Atestados de Licenças', + link: resolve('/recursos-humanos/atestados-licencas'), + permission: { recurso: 'atestados_licencas', acao: 'listar' } + }, + { + label: 'Controle de Ponto', + link: resolve('/recursos-humanos/controle-ponto'), + permission: { recurso: 'ponto', acao: 'ver' }, + exact: true + }, + { + label: 'Banco de Horas', + link: resolve('/recursos-humanos/controle-ponto/banco-horas'), + permission: { recurso: 'banco_horas', acao: 'ver' } }, { label: 'Registro de Ponto', - link: '/recursos-humanos/registro-pontos', + link: resolve('/recursos-humanos/registro-pontos'), permission: { recurso: 'ponto', acao: 'ver' } }, { label: 'Símbolos', - link: '/recursos-humanos/simbolos', + link: resolve('/recursos-humanos/simbolos'), permission: { recurso: 'simbolos', acao: 'listar' } } ] @@ -105,23 +137,23 @@ { label: 'Pedidos', icon: 'ClipboardCheck', - link: '/pedidos', + link: resolve('/pedidos'), permission: { recurso: 'pedidos', acao: 'listar' }, submenus: [ { label: 'Meus Pedidos', - link: '/pedidos', + link: resolve('/pedidos'), permission: { recurso: 'pedidos', acao: 'listar' }, excludePaths: ['/pedidos/aceite', '/pedidos/minhas-analises'] }, { label: 'Pedidos para Aceite', - link: '/pedidos/aceite', + link: resolve('/pedidos/aceite'), permission: { recurso: 'pedidos', acao: 'aceitar' } }, { label: 'Minhas Análises', - link: '/pedidos/minhas-analises', + link: resolve('/pedidos/minhas-analises'), permission: { recurso: 'pedidos', acao: 'aceitar' } } ] @@ -153,17 +185,17 @@ { label: 'Fluxos & Processos', icon: 'GitMerge', - link: '/fluxos', + link: resolve('/fluxos'), permission: { recurso: 'fluxos_instancias', acao: 'listar' }, submenus: [ { label: 'Meus Processos', - link: '/fluxos/meus-processos', + link: resolve('/fluxos/meus-processos'), permission: { recurso: 'fluxos_instancias', acao: 'listar' } }, { label: 'Modelos de Fluxo', - link: '/fluxos/templates', + link: resolve('/fluxos/templates'), permission: { recurso: 'fluxos_templates', acao: 'listar' } } ] @@ -171,7 +203,7 @@ { label: 'Painel de TI', icon: 'Settings', - link: '/ti', + link: resolve('/ti'), permission: { recurso: 'ti_painel_administrativo', acao: 'ver' } } ]; diff --git a/packages/backend/convex/permissoesAcoes.ts b/packages/backend/convex/permissoesAcoes.ts index 7eef7d8..498c47f 100644 --- a/packages/backend/convex/permissoesAcoes.ts +++ b/packages/backend/convex/permissoesAcoes.ts @@ -8,15 +8,9 @@ const PERMISSOES_BASE = { permissoes: [ // Funcionários { - nome: 'funcionarios.dashboard', + nome: 'funcionarios.detalhar', recurso: 'funcionarios', - acao: 'dashboard', - descricao: 'Acessar o painel de funcionários' - }, - { - nome: 'funcionarios.ver', - recurso: 'funcionarios', - acao: 'ver', + acao: 'detalhar', descricao: 'Visualizar detalhes de funcionários' }, { @@ -25,6 +19,12 @@ const PERMISSOES_BASE = { acao: 'listar', descricao: 'Listar funcionários' }, + { + nome: 'funcionarios.ver', + recurso: 'funcionarios', + acao: 'ver', + descricao: 'Visualizar dados completos de funcionários' + }, { nome: 'funcionarios.criar', recurso: 'funcionarios', @@ -50,11 +50,116 @@ const PERMISSOES_BASE = { descricao: 'Aprovar ausências de funcionários' }, { - nome: 'funcionarios.aprovar_ferias', - recurso: 'funcionarios', - acao: 'aprovar_ferias', + nome: 'ferias.aprovar', + recurso: 'ferias', + acao: 'aprovar', descricao: 'Aprovar férias de funcionários' }, + { + nome: 'ferias.dashboard', + recurso: 'ferias', + acao: 'dashboard', + descricao: 'Acessar o painel de férias de funcionários' + }, + // Atestados e Licenças + { + nome: 'atestados_licencas.listar', + recurso: 'atestados_licencas', + acao: 'listar', + descricao: 'Listar atestados e licenças' + }, + { + nome: 'atestados_licencas.criar', + recurso: 'atestados_licencas', + acao: 'criar', + descricao: 'Registrar novos atestados ou licenças' + }, + { + nome: 'atestados_licencas.editar', + recurso: 'atestados_licencas', + acao: 'editar', + descricao: 'Editar atestados ou licenças' + }, + { + nome: 'atestados_licencas.excluir', + recurso: 'atestados_licencas', + acao: 'excluir', + descricao: 'Excluir atestados ou licenças' + }, + { + nome: 'atestados_licencas.dashboard', + recurso: 'atestados_licencas', + acao: 'dashboard', + descricao: 'Acessar painel e gráficos de atestados e licenças' + }, + // Ausências + { + nome: 'ausencias.listar', + recurso: 'ausencias', + acao: 'listar', + descricao: 'Listar solicitações de ausência' + }, + { + nome: 'ausencias.criar', + recurso: 'ausencias', + acao: 'criar', + descricao: 'Criar solicitações de ausência' + }, + { + nome: 'ausencias.aprovar', + recurso: 'ausencias', + acao: 'aprovar', + descricao: 'Aprovar solicitações de ausência' + }, + { + nome: 'ausencias.reprovar', + recurso: 'ausencias', + acao: 'reprovar', + descricao: 'Reprovar solicitações de ausência' + }, + { + nome: 'ausencias.excluir', + recurso: 'ausencias', + acao: 'excluir', + descricao: 'Excluir solicitações de ausência' + }, + // Ponto e Banco de Horas + { + nome: 'ponto.ver', + recurso: 'ponto', + acao: 'ver', + descricao: 'Visualizar telas e relatórios de ponto' + }, + { + nome: 'ponto.registrar', + recurso: 'ponto', + acao: 'registrar', + descricao: 'Registrar batidas de ponto' + }, + { + nome: 'ponto.editar', + recurso: 'ponto', + acao: 'editar', + descricao: 'Editar registros de ponto (homologação)' + }, + { + nome: 'banco_horas.ver', + recurso: 'banco_horas', + acao: 'ver', + descricao: 'Visualizar saldo e extrato de banco de horas' + }, + { + nome: 'banco_horas.ajustar', + recurso: 'banco_horas', + acao: 'ajustar', + descricao: 'Criar e aprovar ajustes de banco de horas' + }, + { + nome: 'banco_horas.configurar', + recurso: 'banco_horas', + acao: 'configurar', + descricao: 'Configurar regras e alertas de banco de horas' + }, // Símbolos { nome: 'simbolos.dashboard',