A permissão de cada perfil (Gestor, Médico, Recepção, Desenvolvedor) é verificada em toda rota da API, não apenas escondida na interface. Mesmo que alguém tente acessar uma rota diretamente, o servidor recusa se o perfil não tiver permissão para aquela ação.
Saiba mais sobre controle de acesso
Esconder um botão na tela não impede alguém de chamar a rota por trás dele, por isso a checagem de permissão acontece de novo no servidor, em toda requisição, independente do que a interface mostra.
Na prática, cada rota da API passa por duas camadas antes de tocar qualquer dado:
- Sessão válida: o token de sessão é verificado antes de qualquer outra coisa. Sem sessão, a resposta é recusada (401), nem chega perto da lógica da rota.
- Permissão para aquele módulo ou ação: o perfil da sessão (Gestor, Médico, Recepção, Desenvolvedor) é comparado contra o que aquela rota específica exige. Um médico tentando acessar uma rota do módulo Financeiro recebe 403 (Acesso negado), mesmo tendo uma sessão válida.
Há ainda uma terceira camada, e ela é a que não depende de ninguém lembrar: toda consulta ao banco carrega o identificador da clínica. Um verificador percorre o código inteiro a cada publicação e a reprova se encontrar uma consulta sem esse filtro — as exceções deliberadas são poucas, nomeadas e trazem o motivo escrito. Isolamento entre clínicas não é uma regra que cada rota precisa repetir corretamente; é uma condição que o build confere.