Sistema de Permissões Granular
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 tela | O que permite |
|---|---|
| Sem Permissão | Não usa a funcionalidade. |
| Visualizar | Só consulta. |
| Criar | Consulta e inclui registros novos. |
| Editar | Consulta, inclui e altera. |
| Total | Acesso 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
- Fazer, editar e emitir receita para papel: Atendimentos (Editar).
- Ver o painel da numeração SNCR: Atendimentos (Visualizar); pedir números: Atendimentos (Editar).
- Assinar a receita eletrônica: Assinatura Digital (Criar); ver o PDF assinado e enviar ao paciente: Assinatura Digital (Visualizar).
Detalhes em Receitas e SNCR › Permissões.
Ajustes de permissão de 23/10/2026 Novo — out/2026
- Novo Atendimento (sem agendamento): quem usa a tela precisa de Convênio – Visualizar — sem ela, as listas de convênio e serviço ficam vazias. Ver Pacientes › Novo Atendimento.
- Aprovar orçamento/agendamento: o médico que não tem acesso à tela de Colaboradores agora consegue aprovar — opções como "Aprovado pela Assistência" não ficam mais desabilitadas por falta dessa permissão.
Modelo anterior vs. modelo granular (em produção)
| Anterior | Granular (#395 — em produção) | |
|---|---|---|
| Papéis por usuário | 1 (Role) | N (PerfilPermissao) |
| Ações | 4 fixas | 4 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) |
| Granularidade | Por módulo | Por permissão |
| Grupos | Não | GrupoPermissao |
| Customização | Hard-coded | Tela admin |
| Integração Keycloak | Não | Sim (sincroniza) |
Models (8)
PerfilPermissao— perfil (ex: "Recepcionista Sênior")Permissao— permissão atômica (ex: "AGENDAMENTO")PermissaoAcao— ação dentro de uma permissão (VIEW, CREATE, ...)PermissaoAcaoPerfilPermissao— junction perfil ↔ açõesGrupoPermissao— agrupador organizacionalTipoDeAcao— ações: VIEW, CREATE, UPDATE, DELETE (hierarquia: DELETE inclui UPDATE, que inclui CREATE, que inclui VIEW) e, desde 12/08/2026, três ações elevadas concedidas por colaborador — EDIT_ALHEIO (agir sobre registro de outro colaborador), CANCELAR e EXCLUIR (agir em registro com status final) — que existem nas permissõesAGENDAMENTO/ACOLHIMENTO/CONFIRMACAOeATENDIMENTOS(o administrador continua passando por tudo). ✅ Atualização 13/10: desde out/2026 há também ações próprias emCONTAS CAIXAS(ver abaixo) e a ação CANCELAR emNOTAS FISCAIS DE ENTRADA(estornar recebimento de NF de compra). ✅ Correção — 30/09/2026 Versões anteriores listavam EXPORT, IMPRIMIR, AUTORIZAR e REATIVAR: esses tipos de ação não existem no sistema. ✅ Atualização 13/10: desde 12/10 existe a ação ESTORNAR, uma das 9 ações novas deCONTAS CAIXAS(Financeiro).ColaboradorPermissao— vínculo colaborador ↔ perfisColaboradorGrupo— vínculo colaborador ↔ grupos
Endpoints (9+ endpoints)
| Método | Endpoint | Função |
|---|---|---|
| POST | /perfil/grupo | Criar GrupoPermissao |
| GET | /perfil/grupo | Listar grupos do banco |
| GET | /perfil/grupo-keycloak | Listar grupos no Keycloak |
| GET | /perfil/permissoes | Listar todas permissões |
| GET | /perfil/colaborador/:id/permissoes | Permissões resolvidas do colaborador |
| PUT | /perfil/grupo/:id/permissoes | Editar permissões do grupo |
| PUT | /perfil/colaborador/:id/permissoes | Editar permissões do colaborador |
| GET | /perfil/perfil-permissoes | Listar PerfilPermissao |
| POST | /perfil/perfil-permissoes | Criar PerfilPermissao |
Salvar o perfil aplica a todos os usuários do perfil ✅ Novo — 01/10/2026
- Desde 01/10/2026 (#636), salvar um perfil aplica a alteração a todos os colaboradores ativos daquele perfil, de uma vez, com a resposta "Alteração aplicada a N usuário(s)".
- O perfil passa a guardar também as ações elevadas (EDIT_ALHEIO, CANCELAR, EXCLUIR). Na aplicação, as ações elevadas dadas individualmente a um usuário são preservadas (as do perfil são somadas).
- Salvar as permissões de um colaborador muda só ele — não altera mais o perfil.
- Não é mais preciso abrir e salvar cada colaborador depois de alterar o perfil. Usuários que já estavam diferentes do perfil antes de 01/10 não foram acertados automaticamente — confira-os.
- Se outra pessoa salvou o mesmo perfil depois que você abriu a tela, aparece "Este registro foi alterado por outra pessoa. Recarregue a tela antes de alterar."
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.
- Negar por padrão (#667): não entrou — a issue foi fechada em 14/10 só com as permissões das rotas que estavam abertas (abaixo). Hoje, quem não tem nenhuma configuração num módulo continua vendo as telas dele (só leitura); depois da mudança, não verá. Administrador: antes dessa mudança, confira se o perfil de cada colaborador tem todos os módulos que ele usa (inclusive aprovações pelo app). Administradores continuam com acesso total.
- Histórico de auditoria imutável (#670).
Segurança: o que mudou nas permissões em 13–15/10 ✅ Novo — 15/10/2026
- Permissão conferida no servidor em telas que estavam abertas (#663, 13/10): registros e movimentação financeira (leitura com REGISTROS FINANCEIROS › Visualizar), duplicatas, glosas, guias, orçamentos, anexos do agendamento, consultas, lista de espera, auditoria, exportação em Excel de cadastros, assinatura digital (ASSINATURA_DIGITAL › Visualizar) e parâmetros. Quem já usa essas telas com o perfil normal continua usando.
- Ações que passaram a exigir permissão (#667, 13–14/10): salvar glosas = GLOSAS › Alterar (o botão também segue a permissão); editar XML = Alterar em Administrar Lote ou Faturamento; CD e unidade de medida = PRODUTOS › Criar; conselho = COLABORADOR › Criar; categoria e layout de tipo de impressão = TIPO DE IMPRESSAO › Criar; layout de tela = LAYOUT MODELO › Alterar; tipo de atendimento = TIPOS DE ATENDIMENTOS CONSULTAS › Criar. Quem tem só Visualizar em Glosas não salva glosa; quem tem só Visualizar em Faturamento/Administrar Lote não edita XML.
- Lista de administradores: só administrador altera ("Apenas administradores podem alterar a lista de administradores").
- Histórico de alterações das telas (botão Histórico em registro, agendamento, paciente, autorização, glosa, repasse) é aberto a qualquer colaborador; a permissão AUDITORIA fica só na Auditoria geral e no log de acesso a prontuário.
- Chamados: quem tem CHAMADO em Criar/Alterar/Excluir sem Visualizar explícito já vê a lista de demandas (15/10).
- Novas permissões TISS (#619, 15/10, grupo Configurações):
TISS_INTEGRACAO(Visualizar = ver configuração e log; Alterar = salvar e testar) eTISS_ELEGIBILIDADE(Visualizar = ver status; Criar = verificar elegibilidade) — ver Configurações › Integração TISS. - Links de Pagamento (#409, 13/10): configurar = PARAMETROS (Alterar); ver/gerar link = Visualizar/Alterar em REGISTROS FINANCEIROS, CONTAS CAIXAS ou AGENDAMENTO/ACOLHIMENTO/CONFIRMAÇÃO — ver Financeiro.
- Referências oficiais (#662, 15/10): permissão PRODUTOS. Log de erros (14/10): só administrador.
- Aprovação presencial com senha de outro colaborador: 5 erros em 15 minutos travam aquele aprovador (#669); troca de clínica confere o vínculo a cada ação (#666).
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
- Login via Keycloak → token JWT com sub (userId)
- API valida token + carrega Colaborador
- Recupera todos os PerfilPermissao via ColaboradorPermissao
- União: SET de PermissaoAcao = SOMA de todos os perfis
- Compara com permissão exigida pela rota
- Permite ou bloqueia (HTTP 403)
- Cache de 5 min (invalida ao alterar perfil)
Migração do modelo antigo
Script one-shot migra Roles existentes:
- Role.RECEPCIONISTA → PerfilPermissao "Recepcionista (padrão)"
- Role.MEDICO → PerfilPermissao "Médico (padrão)"
- Role.ADMIN → PerfilPermissao "Administrador (padrão)"
- Role.GERENTE → PerfilPermissao "Gerente (padrão)"
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):
- Criação de PerfilPermissao opcionalmente cria Group no Keycloak
- Atribuição de colaborador a perfil sincroniza com grupo Keycloak
GET /perfil/grupo-keycloaklista grupos diretamente do Keycloak (fonte da verdade SSO)
Permissões especiais
Algumas permissões têm regras adicionais:
- Ações elevadas (desde 12/08/2026): EDIT_ALHEIO, CANCELAR e EXCLUIR, concedidas por colaborador (e, desde 01/10, também guardadas no perfil), nas permissões
AGENDAMENTO/ACOLHIMENTO/CONFIRMACAOeATENDIMENTOS; desde out/2026 também emCONTAS CAIXASe (CANCELAR) emNOTAS FISCAIS DE ENTRADA— ver Models. - ✅ Correção — 30/09/2026 Versões anteriores citavam aqui DUAL_APROVAL (aprovação por 2+ perfis) e OVERRIDE_BLOCK (quebrar regra, com o exemplo "atender sem autorização — exige justificativa"): não existem no sistema. Não há permissão para atender/agendar sem autorização — isso depende do cadastro do convênio/serviço (se o serviço pede autorização) e da autorização obrigatória no agendamento (#374). A autorização é controlada pela permissão
AUTORIZACAO(grupo de Agendamento; só VIEW/CREATE/UPDATE/DELETE) — ver Autorização › Permissões. - DESCONTO: permissão cujo UPDATE permite aprovar desconto remotamente (alçada), ligada aos níveis de ParametrosDeDesconto (hoje chamados nível de alçada). (Versões anteriores chamavam de "DESCONTO_NIVEL_N"/"DISCOUNT_NIVEL_1" — nomes que não existem.) ✅ Novo — 26/09/2026 Os pedidos de aprovação (farol, desconto, edição/cancelamento de Atendido) chegam em tempo real a todos os aprovadores do nível exigido ou superior (ex.: pedido de Nível 2 chega ao Nível 2 e ao Nível 3) e somem da tela dos demais quando um responde; canais isolados por clínica. ✅ Atualização 13/10: desde 09/10 o pedido remoto de edição ou cancelamento de Atendido vai para todos de nível 2 ou 3 (o primeiro que responder vale); a notificação de desconto mostra paciente e serviço(s) (#637).
✅ 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:
- Quem fez (userId)
- Quando
- O quê (criou/editou/excluiu perfil/permissão/vínculo)
- Antes vs Depois
✅ 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)
/portal/configuracoes/colaboradores— gerenciar colaboradores (ListColaborador)/portal/configuracoes/colaboradores/criar— novo (FormColaborador)/portal/configuracoes/colaboradores/:id/editar— editar + atribuir perfis
Componentes
ListPermissoes— visão por colaboradorSelectPermissoes— checkbox treePermissionTable— matriz módulo × açãoFormUsuarioKeyCloack— sincronização Keycloak