docs: documenta login por sessao e perfis admin/padrao no README
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
64990b6db2
commit
a71b990a3c
@@ -8,11 +8,33 @@ Proteções: login HTTP Basic em toda rota, CSRF via cookie de duplo envio (`app
|
||||
|
||||
A rota `/log` mostra o histórico de ações do painel (tabela `LOG_PAINEL`, criada no banco de dev — **precisa ser criada manualmente em produção também**, DDL no início de `app/db/log.py`) e, se `N8N_API_URL`/`N8N_API_KEY` estiverem configuradas (`.env.example`), os últimos envios automáticos de chave via WhatsApp (lidos da Data Table `pagamentos_processados` do n8n, somente leitura).
|
||||
|
||||
## Login por funcionário
|
||||
## Login e permissões
|
||||
|
||||
Cada funcionário pode ter seu próprio usuário/senha (tabela `FUNCIONARIO_PAINEL`, criada no banco de dev — **precisa ser criada manualmente em produção também**, DDL no início de `app/db/funcionarios.py`; senha em hash `scrypt`, nunca texto puro). Gerencie em **Funcionários** no menu.
|
||||
O painel usa login por sessão (cookie assinado, `app/session.py`) — não é
|
||||
mais HTTP Basic Auth. Defina `SESSION_SECRET` no `.env` (`.env.example`
|
||||
tem o exemplo); sem isso, uma chave é gerada em memória a cada start do
|
||||
processo, o que derruba todas as sessões ativas a cada restart (funciona,
|
||||
só incomoda).
|
||||
|
||||
`ADMIN_USER`/`ADMIN_PASSWORD` (`.env.example`) continuam funcionando como conta de bootstrap — é com ela que você entra a primeira vez para cadastrar o primeiro funcionário, e serve de plano B se a tabela ficar vazia. Login checa primeiro o admin do `.env`, depois `FUNCIONARIO_PAINEL` (só contas com `ATIVO=1`). O log de ações mostra o nome de quem fez cada coisa.
|
||||
Cada funcionário (`FUNCIONARIO_PAINEL`, criada no banco de dev — **precisa
|
||||
ser criada manualmente em produção também**, DDL no início de
|
||||
`app/db/funcionarios.py`) tem um perfil: **admin** (gerencia outros
|
||||
funcionários em `/funcionarios`: cadastra, edita, redefine senha,
|
||||
ativa/desativa, promove/rebaixa perfil) ou **padrão** (sem acesso a
|
||||
`/funcionarios`). Todo funcionário cadastrado antes dessa funcionalidade
|
||||
existir virou admin automaticamente na migração (`ALTER TABLE
|
||||
FUNCIONARIO_PAINEL ADD COLUMN PERFIL ...`, mesmo arquivo). O sistema nunca
|
||||
deixa ficar sem nenhum admin ativo — rebaixar ou desativar o último admin é
|
||||
bloqueado.
|
||||
|
||||
Qualquer usuário logado troca a própria senha em **Minha conta**
|
||||
(`/minha-conta`), pedindo a senha atual antes de trocar.
|
||||
|
||||
`ADMIN_USER`/`ADMIN_PASSWORD` (`.env.example`) continuam funcionando como
|
||||
conta de bootstrap, sempre com perfil admin — é com ela que você entra a
|
||||
primeira vez para cadastrar o primeiro funcionário, e serve de plano B se
|
||||
a tabela ficar vazia. Login checa primeiro o admin do `.env`, depois
|
||||
`FUNCIONARIO_PAINEL` (só contas com `ATIVO=1`).
|
||||
|
||||
## Rodando localmente (sem Docker)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user