teste #12

Merged
victor merged 40 commits from teste into main 2026-08-28 17:55:39 -03:00
Owner

Atualização global 28/08/2026

Atualização global 28/08/2026
victor added 40 commits 2026-08-28 17:55:21 -03:00
Três problemas de exposição, todos com o mesmo efeito: dado interno saindo
para quem não deveria ver.

1. Painel de debug do Rails na tela do usuário
   O servidor sobe com RAILS_ENV=development (docker-compose.yml), e
   development tinha `consider_all_requests_local = true`. A página
   "Action Controller: Exception caught" mostra parâmetros, SESSÃO
   (session_id, _csrf_token, id do usuário logado), cookies, IP do cliente,
   caminho do servidor e o trace inteiro — para qualquer pessoa que
   provocasse um erro. Agora o detalhe depende de ERROS_DETALHADOS=true,
   que só é ligado na máquina de desenvolvimento.

2. Senha e PIN em texto puro no log
   Não existia filter_parameter_logging.rb neste projeto: toda senha do
   login, PIN de motorista e token do WhatsApp iam para log/ em texto
   puro — e log vai junto em backup e em suporte. Era o pior dos três,
   porque é permanente e não aparece na tela de ninguém.

3. Páginas de erro do usuário final
   Sem public/500.html, desligar o painel deixaria tela em branco. Criadas
   500/404/422 em português, sem CSS externo (precisam funcionar com a
   aplicação fora do ar).

Também sai do versionamento a pasta Erros/, com 16 páginas de debug salvas
do navegador. Não há cookie de sessão assinado nelas — ninguém entra no
sistema com o que está ali — mas há session_id, token CSRF, id de usuário e
IPs, que não têm por que estar no repositório.

Correção estrutural pendente: subir o servidor com RAILS_ENV=production
(production.rb já tem consider_all_requests_local=false e force_ssl=true).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- production.rb (hosts): a linha que parecia só liberar o APP_HOST na verdade
  LIGAVA a verificação de Host e recusava todo o resto — o acesso pelo IP
  interno caía em 'Blocked hosts: 100.75.222.23:3001'. Agora entram também
  localhost/127.0.0.1 e a lista HOSTS_PERMITIDOS.
- production.rb (i18n): 'fallbacks = true' significa cair no default_locale,
  que aqui é o próprio pt-BR — o fallback apontava para si mesmo e chave
  ausente virava 'Translation missing' na tela do usuário. Agora [:en], igual
  ao application.rb.
- pt-BR.yml: traduções do Devise (failure/sessions/passwords). O projeto não
  usa devise-i18n; em development o texto vinha em inglês pelo fallback e o
  buraco passava despercebido.
- docker-compose.yml / .env.example: porta do host parametrizada
  (${PORTA_APP:-3001}) e APP_HOST/APP_NAME/WHATSAPP_URL/HOSTS_PERMITIDOS com
  padrão — essa configuração vivia só no .env do servidor e sumiu junto com ele.
Traz para a tela as funções do programa original (Romaneiro PDF), na linha de
design do projeto:
- Veículos deixam de ser um <select> e viram lista visível com a contagem de
  paradas de cada carro — que é a conferência feita antes de imprimir e ficava
  invisível mostrando um veículo por vez. Cada item é link (?veiculo=), então
  sobrevive ao 'voltar' e ao F5. No celular vira faixa horizontal.
- Na mesma coluna: motorista do veículo, 'PDF deste veículo' e 'PDF de TODOS'.
- Busca ganha 'Limpar busca' e contador vivo ('4 de 31 paradas'). A contagem
  saiu do cabeçalho da tabela: dois números para a mesma coisa, um atualizando e
  o outro não, é a divergência que a diretriz 1 proíbe.
- Logo do cabeçalho escolhível (Configuracao 'romaneio_logo', separado do
  empresa_logo — o romaneio é documento do cliente). PNG/JPG até 2MB, gravado em
  storage/logos/ e não em public/, com nome gerado pelo sistema.
victor merged commit 5e75122716 into main 2026-08-28 17:55:39 -03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: victor/Reem-Notas#12