Tela de login: credencial única, sem banco
Toda rota passa por um before_request que redireciona para /login quem não tem sessão — inclusive os POSTs, então /exportar e /salvar-sd sem cookie não chegam ao handler. Ficam de fora só a própria entrada e /static (a tela de login precisa da folha de estilo). Credencial única em constante (admin@iasis.com.br / admin123), comparada com compare_digest nos dois campos e com a mesma mensagem para usuário errado e senha errada — dizer qual dos dois falhou entrega metade da credencial. Sem banco, sem cadastro e sem recuperação de senha: a app é ferramenta interna de uso individual, e isto existe para o upload e o writeback não ficarem abertos a quem alcançar a porta quando ela roda hospedada. SECRET_KEY não tem default assado na imagem — chave fixa numa imagem vale para toda cópia dela. Sem a variável, o servidor sorteia uma por processo e o login cai a cada restart, que é a mesma vida útil que a sessão da SD já tem; é seguro porque o gunicorn roda com -w 1. APP_USUARIO/APP_SENHA seguem a convenção do Dockerfile: default lá, compose só espelha. O Sair encerra a sessão do navegador sem descartar a SD em memória — é a mesma máquina, o mesmo processo. E o teste_e2e faz login uma vez no test client, senão todo request dele voltaria 302. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -43,6 +43,10 @@ import servidor # noqa: E402
|
||||
|
||||
FALHAS: list[str] = []
|
||||
CLIENTE = servidor.app.test_client()
|
||||
# O portão de login vale para todas as rotas (servidor.exigir_login); sem esta
|
||||
# entrada, todo request abaixo voltaria 302 para /login e nenhum teste chegaria
|
||||
# ao handler que quer exercitar.
|
||||
CLIENTE.post("/login", data={"email": servidor.USUARIO, "senha": servidor.SENHA})
|
||||
# Lida da tabela, não fixada: o cabeçalho de linhas-os.yaml manda atualizar
|
||||
# `atualizado_em` a cada edição, e um teste pinado ficaria vermelho à toa.
|
||||
DATA_TABELA = servidor.canonico().linhas_os["atualizado_em"]
|
||||
|
||||
Reference in New Issue
Block a user