Lição: Autenticação, Segurança e Permissões
Esta lição cobre como o usuário entra no sistema, como recupera a senha, como gerencia o próprio perfil e — o ponto central — como o Rabi controla quem pode ver e fazer o quê. Ao final você deverá dominar o fluxo de login via Keycloak (SSO), a recuperação de senha, a rota Minha Conta, o logout seguro e, principalmente, o modelo de permissões em produção: papel (Role) + 4 ações fixas por módulo.
Como acessar o sistema
O Rabi é uma aplicação web (SPA em React/Vite), acessível por qualquer navegador moderno, sem instalação. Endereço de produção:
Ao abrir o endereço sem estar autenticado, você é redirecionado automaticamente para a tela de login (/login). Navegadores recomendados: Chrome, Edge ou Firefox em versão recente.
Tela de login
A tela de login é gerenciada pelo Keycloak. Elementos:
| Elemento | Função |
|---|---|
| Campo E-mail | E-mail vinculado à conta |
| Campo Senha | Senha criada no cadastro ou última redefinição |
| Botão "Entrar" | Confirma as credenciais e inicia a sessão |
| Link "Esqueci minha senha" | Inicia a recuperação por e-mail |
Passo a passo — login
- Acesse app.rabisistemas.com.br.
- Você é redirecionado para
/login. - Informe o e-mail cadastrado pelo administrador.
- Informe a senha.
- Clique em Entrar.
- Validadas as credenciais, você vai ao Dashboard principal.
Recuperação de senha
É possível redefinir a senha de forma autônoma pelo fluxo do Keycloak:
- Na tela de login, clique em "Esqueci minha senha".
- Você vai à página de recuperação do Keycloak.
- Informe o e-mail da conta e confirme.
- Verifique a caixa de entrada (e o spam/lixo eletrônico).
- Abra o e-mail e clique no link de redefinição.
- Crie a nova senha nos dois campos e confirme.
- Volte ao login e entre com a nova senha.
Minha Conta (perfil do usuário)
Após logar, o usuário acessa seus dados de perfil, gerenciados pelo Keycloak. Rota: /portal/minha-conta. A página exibe:
- Nome completo do usuário
- E-mail cadastrado
- Dados de login e segurança
- Opção de alterar a senha diretamente
- Sessões ativas (dispositivos conectados)
- Foto de perfil (upload de avatar) e histórico de atividades
Logout seguro
Encerre a sessão pela função de logout no menu do perfil — não basta fechar a aba, pois a sessão pode permanecer ativa.
- Clique na foto/nome do usuário no canto superior direito (topbar).
- No menu, clique em "Sair" (ícone de saída).
- Você é desconectado e volta à tela de login.
Autenticação com Keycloak (SSO)
O Rabi usa o Keycloak como provedor de identidade centralizado, com o padrão OAuth2 / OpenID Connect. Consequências práticas:
- Usuários, senhas e sessões são geridos pelo Keycloak, não pelo Rabi diretamente.
- As credenciais nunca trafegam para a aplicação — o Rabi recebe apenas um token de acesso validado.
- Suporta Single Sign-On (SSO): uma autenticação dá acesso a sistemas do mesmo realm.
- Usa browser flow; Direct Access Grants é desabilitado por segurança.
- As sessões expiram após período de inatividade configurado pelo administrador.
Realms por ambiente: rabisystems-dev, rabisystems-hmg (homologação) e rabisystems (produção). Cliente: rabi.client.sistemas.*. Homologação: Keycloak em login.hmg.rabisistemas.dev, app em sistema.hmg.rabisistemas.dev.
Sistema de permissões (modelo em produção)
As permissões organizam-se em dois eixos: o grupo (o módulo) e o nível de ação dentro dele.
Níveis de ação (4 fixos)
| Nível | O que permite |
|---|---|
| NONE | Sem acesso — não vê nem acessa o módulo |
| VIEW | Visualizar / consultar; não cria, edita ou exclui |
| CREATE | Criar novos registros (requer VIEW) |
| UPDATE | Editar registros existentes (requer VIEW) |
| DELETE | Excluir registros — conceda com cautela (pode ser irreversível) |
Ordem de menos a mais permissivo: NONE < VIEW < CREATE < UPDATE < DELETE.
Grupos de funcionalidade (módulos)
| Grupo | Módulo correspondente |
|---|---|
| AGENDAMENTO | Consultas, procedimentos e agenda dos profissionais |
| ATENDIMENTO | Atendimentos, prontuários e acolhimento |
| PACIENTES | Cadastro e manutenção de pacientes |
| FINANCEIRO | Lançamentos, contas a pagar/receber, fluxo de caixa |
| FATURAMENTO | Guias, faturamento de convênios e cobrança |
| CONFIGURACOES | Parametrização e cadastros auxiliares |
| ESTOQUE | Produtos, entradas e saídas |
| RELATORIOS | Relatórios gerenciais e operacionais |
| DASHBOARD | Painel de indicadores e métricas |
🟠 Permissões granulares (roadmap — NÃO está em produção)
Comparativo entre o modelo atual (produção) e o planejado:
| Aspecto | Atual (produção) | Planejado (#395) |
|---|---|---|
| Papéis por usuário | 1 (Role) | N (PerfilPermissao) |
| Ações | 4 fixas | 10+ configuráveis (EXPORT, IMPRIMIR, AUTORIZAR, CANCELAR, ESTORNAR...) |
| Granularidade | Por módulo | Por permissão |
| Grupos | Não | GrupoPermissao |
| Customização | Hard-coded | Tela admin |
| Sincronização Keycloak | Não (só autenticação) | Sim (sincroniza grupos/perfis) |
No desenho futuro, o colaborador poderia ter vários perfis, a permissão efetiva seria a união das ações de todos os perfis, com cache de resolução e auditoria de mudanças. Nada disso está no ar hoje.
Novidades de julho/2026 — recursos transversais ✅ Novo — jul/2026
Entregue no ciclo de julho/2026; se ainda não apareceu no seu ambiente, chega na próxima atualização.
- Guard de edição (#401/#404): confirmação ao sair de uma tela com alterações não salvas — evita perda de dados por navegação acidental.
- Idempotência anti-duplo-clique (#408): proteção contra registros duplicados por duplo clique.
- Busca global (#456): busca por parte de nome, telefone, e-mail ou CPF.
- Setas próximo/anterior (#459): navegação por setas no topo das telas.
Rastreabilidade e LGPD
Como cada usuário tem acesso individual, o sistema mantém Logs de Auditoria (em Relatórios) registrando quem fez o quê e quando. Isso é essencial para a LGPD: dados pessoais de pacientes são protegidos e as ações ficam rastreáveis. Por isso o compartilhamento de senha é proibido — ele quebra a rastreabilidade.
Erros comuns e como resolver
| Sintoma | Causa provável | Solução |
|---|---|---|
| Não consigo entrar | Conta não cadastrada / e-mail errado | Peça cadastro ao administrador; confira o e-mail |
| Conta bloqueada | Várias tentativas com senha errada | Aguarde alguns minutos ou peça desbloqueio |
| Link de redefinição não funciona | Link expirado (≈5 min) | Refaça "Esqueci minha senha" |
| Não vejo um módulo que deveria | Nível NONE naquele grupo | Peça ajuste de permissão ao administrador |
| Erro 403 ao tentar uma ação | Nível insuficiente (ex.: tem VIEW, precisa de UPDATE) | Solicite nível maior no grupo correspondente |
| Sessão continua ativa após fechar aba | Não fez logout | Use sempre "Sair" no menu do perfil |
Pontos-chave
- A autenticação é feita pelo Keycloak (OAuth2/OIDC, SSO, browser flow, Direct Access Grants desabilitado).
- Recuperação de senha é autônoma por e-mail; o link expira em ~5 min.
- Cada usuário tem acesso individual — nunca compartilhe senha (rastreabilidade e LGPD).
- Permissões em produção = Role + 4 ações fixas por módulo: NONE < VIEW < CREATE < UPDATE < DELETE.
- São 9 grupos (módulos): AGENDAMENTO, ATENDIMENTO, PACIENTES, FINANCEIRO, FATURAMENTO, CONFIGURACOES, ESTOQUE, RELATORIOS, DASHBOARD.
- Permissões granulares são roadmap (#395, Sprint 9) — não estão disponíveis.
- Entregues em julho/2026 (transversais): guard de edição (#401/#404), idempotência anti-duplo-clique (#408), busca global (#456) e setas próximo/anterior (#459).
O que a prova vai cobrar
- Qual é o modelo de permissões em produção (Role + 4 ações fixas) e a ordem dos níveis.
- Que a autenticação é via Keycloak (SSO, OAuth2/OIDC, browser flow) e não guarda senha no Rabi.
- O fluxo de recuperação de senha e a validade limitada do link.
- Por que cada usuário deve ter acesso individual (rastreabilidade e LGPD).
- Reconhecer que "permissões granulares" é planejado (#395) e NÃO está em produção.