Sistema de Permissões Granular

📚 Referência completa e treinamento: este módulo tem uma lição detalhada de certificação — passo a passo de todas as telas, campos e regras.
✅ Novo — set/2026 · EM PRODUÇÃO (GitLab #395, entregue 15/09). As permissões granulares estão no ar: permissões finas por funcionalidade e por ação, com perfis configuráveis, grupos e sincronização com o Keycloak. Elas substituem o modelo clássico de papel (Role) + ações fixas (VIEW/CREATE/UPDATE/DELETE) por módulo — ver Configurações → Usuários e Permissões. Entregue no ciclo de setembro/2026; se ainda não apareceu no seu ambiente, chega na próxima atualização.

Tela de permissões redesenhada (15–16/10/2026) Novo — out/2026

A lista de permissões do perfil e do colaborador foi redesenhada. Em cada funcionalidade você escolhe um nível, e há um campo de busca para achar a permissão pelo nome:

Nível na telaO que permite
Sem PermissãoNão usa a funcionalidade.
VisualizarSó consulta.
CriarConsulta e inclui registros novos.
EditarConsulta, inclui e altera.
TotalAcesso completo à funcionalidade, inclusive excluir.

Os níveis são os mesmos de antes (Visualizar ⊂ Criar ⊂ Alterar ⊂ Excluir), agora com nomes mais simples. As ações elevadas (agir em registro de outro colaborador, Cancelar, Excluir em status final, as ações de Contas Caixas) continuam marcadas à parte.

Ver Valores (excepcional): ação nova para colaborador com conselho profissional (médico, dentista etc.). Desde 21/10/2026, quem tem conselho e recebe Ver Valores pode aprovar orçamento. Libere só para quem realmente precisa ver valores e aprovar.

Permissões das Receitas e do SNCR Novo — out/2026

Detalhes em Receitas e SNCR › Permissões.

Ajustes de permissão de 23/10/2026 Novo — out/2026

Modelo anterior vs. modelo granular (em produção)

AnteriorGranular (#395 — em produção)
Papéis por usuário1 (Role)N (PerfilPermissao)
Ações4 fixas4 níveis hierárquicos (VIEW ⊂ CREATE ⊂ UPDATE ⊂ DELETE) + 3 ações elevadas por colaborador (EDIT_ALHEIO, CANCELAR, EXCLUIR — desde 12/08, só em Agendamento/Acolhimento/Confirmação e Atendimentos)
GranularidadePor móduloPor permissão
GruposNãoGrupoPermissao
CustomizaçãoHard-codedTela admin
Integração KeycloakNãoSim (sincroniza)

Models (8)

Endpoints (9+ endpoints)

MétodoEndpointFunção
POST/perfil/grupoCriar GrupoPermissao
GET/perfil/grupoListar grupos do banco
GET/perfil/grupo-keycloakListar grupos no Keycloak
GET/perfil/permissoesListar todas permissões
GET/perfil/colaborador/:id/permissoesPermissões resolvidas do colaborador
PUT/perfil/grupo/:id/permissoesEditar permissões do grupo
PUT/perfil/colaborador/:id/permissoesEditar permissões do colaborador
GET/perfil/perfil-permissoesListar PerfilPermissao
POST/perfil/perfil-permissoesCriar PerfilPermissao

Salvar o perfil aplica a todos os usuários do perfil ✅ Novo — 01/10/2026

Ações novas do Financeiro (Contas Caixas) ✅ Novo — 12/10/2026

Com a revisão do financeiro (#650), a permissão CONTAS CAIXAS ganhou 9 ações: CONFERIR_CAIXA, REABRIR_CAIXA, RECEBER_OUTRA_CONTA, ALTERAR_RECEBEDOR, BAIXA_RETROATIVA, CONCILIAR, DESCONCILIAR, EXCLUIR_COMPROVANTE e ESTORNAR. Ninguém recebe essas ações automaticamente: o administrador precisa liberá-las no perfil de quem vai usar. "Líder" do caixa = administrador ou quem tem EDIT_ALHEIO em CONTAS CAIXAS; reabrir caixa e estornar também exigem alçada Nível 2/3. As telas Caixa e Conciliação Bancária usam CONTAS CAIXAS › VIEW. Ver Financeiro.

🟠 Em preparação Ainda NÃO está em produção:

Segurança: o que mudou nas permissões em 13–15/10 ✅ Novo — 15/10/2026

Exemplo de Hierarquia

GrupoPermissao "Equipe Recepção"
├─ PerfilPermissao "Recepcionista Júnior"
│  ├─ Permissao "AGENDAMENTO"
│  │  ├─ PermissaoAcao VIEW
│  │  ├─ PermissaoAcao CREATE
│  │  └─ PermissaoAcao UPDATE (não DELETE)
│  ├─ Permissao "PACIENTE"
│  │  ├─ PermissaoAcao VIEW
│  │  ├─ PermissaoAcao CREATE
│  │  └─ PermissaoAcao UPDATE
│  └─ Permissao "FILA_ATENDIMENTO" (VIEW)
└─ PerfilPermissao "Recepcionista Sênior"
   ├─ Tudo do Júnior +
   ├─ AGENDAMENTO.DELETE
   ├─ PACIENTE.DELETE
   ├─ AUTORIZACAO.CREATE/VIEW
   └─ Permissao DESCONTO (UPDATE = aprovar desconto pela alçada)

Colaborador "Maria" → vinculada ao PerfilPermissao "Recepcionista Sênior"
                    → vinculada ao Grupo "Equipe Recepção Centro"
                    → vinculada ao Keycloak Group "rabi-recep" (SSO)

Como o sistema resolve permissões

  1. Login via Keycloak → token JWT com sub (userId)
  2. API valida token + carrega Colaborador
  3. Recupera todos os PerfilPermissao via ColaboradorPermissao
  4. União: SET de PermissaoAcao = SOMA de todos os perfis
  5. Compara com permissão exigida pela rota
  6. Permite ou bloqueia (HTTP 403)
  7. Cache de 5 min (invalida ao alterar perfil)

Migração do modelo antigo

Script one-shot migra Roles existentes:

Após migração, admin pode customizar perfis ou criar novos. Role antigo não é deletado (rollback possível).

Sincronização Keycloak

Sistema mantém vínculo bidirecional com grupos do Keycloak (rabi-recep, rabi-medicos, etc):

Permissões especiais

Algumas permissões têm regras adicionais:

✅ Novo — 30/09/2026 Alterar convênio: desde 29/09/2026 o convênio abre em modo consulta e só quem tem permissão de alterar convênios consegue usar Liberar para edição; para os demais aparece "Você não tem permissão para alterar convênios" e a tela fica só para consulta — ver Configurações › Convênios. Desde 01/10, as abas só gravam no Salvar do cabeçalho.

✅ Novo — 02/10/2026 Tokens de integração (#653): as permissões do token de implantação rbt_ são editáveis ("Editar permissões", sem trocar o valor do token) e o Renovar deixa revisar permissões e validade — ver Parâmetros › Integrações. Colaborador desativado é barrado na hora em qualquer ação (02/10).

Auditoria

Toda alteração em perfis/grupos/permissões registra em Actions com:

✅ em produção desde 28/09/2026 LGPD e permissões (épico #596 — no servidor de produção desde 28/09/2026; sem tela própria no sistema da clínica — são ações administrativas, pedidas ao time Rabi ou ao administrador/DPO): a anonimização (#598) é ação de administrador; a exportação/portabilidade dos dados do paciente (#599) fica restrita a administrador / DPO e é registrada em log; o acesso ao prontuário passa a ter log próprio de leitura (#601), com consulta restrita a Admin/DPO. Ao montar perfis, reserve essas ações a quem responde pela proteção de dados. Ver Pacientes › LGPD.

✅ Novo — 29/09/2026 MFA (código no celular) para administradores (#602): a exigência automática de configurar o código TOTP ao tornar alguém administrador foi testada e retirada em 29/09/2026 — hoje não é obrigatória pelo sistema; confirme com o time Rabi a configuração do seu ambiente. O bloqueio por excesso de tentativas continua (proteção padrão do login). Ver Autenticação.

Telas (Frontend)

Componentes