Núcleo — usuários e auditoria¶
Código: backend/apps/core/
Usuários e papéis¶
Modelo Usuario (tabela core_usuario), baseado no usuário padrão do Django. O login é por e-mail e senha (ADR 0009): não há nome de usuário.
| Campo | Uso |
|---|---|
email |
Identifica o usuário no login. Único, guardado em minúsculas; o login não diferencia maiúsculas de minúsculas |
Campos próprios do sistema:
| Campo | Uso |
|---|---|
papel |
administrador, tecnico ou visualizador (ADR 0005) |
whatsapp |
Número para notificações (usado a partir da F4) |
Regras:
eh_administrador: superusuário ou papel administrador.pode_editar: administrador ou técnico. O visualizador só consulta.
Permissões para as views da API (apps/core/permissoes.py):
| Classe | Leitura | Alteração |
|---|---|---|
VisualizadorLe |
qualquer usuário logado | técnico e administrador |
SomenteAdministrador |
administrador | administrador |
Login (API)¶
Autenticação por sessão (cookie), com proteção CSRF. O frontend chama, nesta ordem:
| Passo | Endpoint | Observação |
|---|---|---|
| 1 | GET /api/auth/csrf/ |
Recebe o cookie csrftoken |
| 2 | POST /api/auth/login/ |
email e password; enviar o cabeçalho X-CSRFToken |
| — | GET /api/auth/eu/ |
Dados do usuário logado (papel, pode_editar) |
| — | POST /api/auth/logout/ |
Encerra a sessão |
A sessão dura 12 horas.
Auditoria¶
Tudo que herda de ModeloAuditado é registrado automaticamente em RegistroAuditoria (ADR 0004):
| Ação | Quando | O que guarda |
|---|---|---|
criou |
Criação | Estado depois |
alterou |
Alteração com mudança real | Antes, depois e campos alterados |
excluiu |
Exclusão | Estado antes |
login / logout |
Entrada e saída | Usuário e IP |
login_falhou |
E-mail ou senha errados | E-mail informado e IP (nunca a senha) |
- Rotinas automáticas aparecem como usuário "sistema".
- Em scripts, para atribuir alterações a alguém:
with como_usuario(usuario): ... - Consulta em
/admin/→ Registros de auditoria, somente leitura.
Como tornar um modelo auditado¶
from apps.core.models import ModeloAuditado
class Cto(ModeloAuditado):
...
campos_ocultos_auditoria = ("campo_sensivel",) # opcional
Administração (/admin/)¶
Visual moderno (Unfold), com menu lateral em português: Acesso (usuários, grupos, auditoria), Rotinas agendadas e Ajuda (documentação e API). O tema (Claro, Escuro ou Sistema, padrão Sistema) fica no menu da conta, no canto inferior esquerdo. Ver ADR 0010.
Saúde do sistema¶
GET /api/saude/ (sem login) responde 200 com {"status": "ok", "banco": "ok", "redis": "ok"}, ou 503 se algo estiver fora. É usado pelo Docker (healthcheck) e pode ser usado pelo Zabbix.