Baratão Combustíveis — parceiro de posto de gasolina
Autenticação federada por JWT, webhook de compra, onboarding com cupons no Clube e a correção de segurança da accessKey.
Parcialmente citado no PDF anterior (branch SUST-426), mas sem detalhamento do fluxo. É um parceiro real — a única ocorrência "falsa" de Baratão é um template de e-mail no Manager que usa o nome como exemplo de campanha, sem lógica condicional de whitelabel.
Backend (urbis-api, módulo genérico gasStation)
- POST /auth/authorize-user-for-baratao (BarataoGuard) — gera um JWT próprio (BARATAO_JWT_SECRET, 1h de validade) com nome, e-mail, CPF, telefone, whitelabelId e incentiveUserId, para autenticar dentro da webview sem reenviar senha.
- POST /incentive/gas-station/update-data (mesmo guard) — webhook que o Baratão chama para informar o status de uma compra vinculada a um IncentiveUser. Entrada: { dataCompra, incentiveUserId, valorTotal, pago, usado, dataVencimento }. Valida incentive.specialOfferType === 'gasStation' e, se virou 'acquired', dispara e-mail de confirmação + pesquisa de satisfação.
Clube (urbis-club)
- Onboarding do posto (GasStationOnboarding, 7 passos): para o Baita, o passo de índice 4 é substituído (registry baitaOverrides.gasStationOnboarding.replaceStep) pelo BaitaOnboardCouponStep, com 2 cupons aplicados manualmente no caixa/bomba: BAITAPRIMEIRAVEZ20 (primeira vez) e BAITA (cliente fiel).
- Ao concluir, o front geocodifica cidade/UF (Google Maps Geocoding API — chave hardcoded no cliente, ponto de atenção de segurança) e chama o proxy Next.js /api/authorize-user-for-baratao, que injeta a accessKey no servidor e retorna um token.
- Com token + lat/lng, o app abre uma webview para https://baratao-phi.vercel.app/. Não há geração de cupom/voucher dentro da Urbis para esse tipo de oferta.
🔒 Correção de segurança (~13/08/2026)
Antes, a accessKey do Baratão (@urbis-baratao-25-combustiveis-key) ia hardcoded no header de uma chamada feita direto do navegador — visível no bundle JS e no Network tab. Corrigido movendo a chamada para um proxy server-side (src/pages/api/authorize-user-for-baratao.ts), com a env GAS_STATION_ACCESS_KEY só acessível no servidor e resposta com Cache-Control: no-store. O mesmo padrão foi aplicado ao fluxo O Globo.
Manager: existe uma branch histórica (SUST-426-onboarding-personalizado-para-baratao-baita) e um template de e-mail promocional "Semana do Consumidor" que destaca o parceiro. Esse template é genérico — qualquer clube pode usá-lo.