Cerebro Studio · Backlog · Changelog
RioNoTeatro • /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md
Abrir Studio Projeto externo em modo read-only; encaminhamento permitido, escrita bloqueada.

Backlog Unificado

Projeto: RioNoTeatro. Fonte principal: /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md.

Modo read-only: ações de escrita ficam disponíveis apenas para o Cérebro.

Sem itens pendentes em /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md.

Especificações Disponíveis (fora da fila pendente)

Detalhe do BK Selecionado

/www/wwwroot/rionoteatro.com.br/docs/backlog/BK-259-listaopen-retirada-ingresso.md • 2026-04-12T06:34:46.984Z

BK-259 - Lista aberta do produtor: retirada/desmarcação de ingressos

Objetivo

  • corrigir a tela produtor/listaopen.php para mostrar corretamente o status ingresso_retirado
  • restaurar o toggle do clique no nome para marcar e desmarcar retirada sem comportamento silencioso

Sintomas reportados

  • alguns nomes aparecem com (JÁ RETIRADO) de forma aparentemente indevida
  • clicar no nome, que antes desmarcava o status, não está mais funcionando
  • caso real reportado na URL:
  • https://rionoteatro.com.br/produtor/listaopen.php?id=MTg4OTE=#

Leitura inicial

  • a UI renderiza desmarcaingresso quando pedidos.ingresso_retirado = 1
  • o toggle chama produtor/action.php via AJAX nos cases:
  • marcaingresso
  • desmarcaingresso
  • os dois cases usam obj_sql->update(...) legado e retornam success sem verificar o resultado real do update
  • existe evidência no banco de pelo menos um pedido da sessão com ingresso_retirado = 1
  • hipótese principal desta rodada:
  • o backend de toggle está frágil/silencioso e precisa passar a responder com sucesso real ou erro real

Arquivos candidatos

  • produtor/listaopen.php
  • produtor/action.php

RCA adicional - 2026-04-12 03:25 -03

  • caso real auditado:
  • URL: https://rionoteatro.com.br/produtor/listaopen.php?id=MTg4OTE=#
  • sessão: sec_id = 18891
  • peça: As Loucas do Méier
  • pedido afetado: pedidos.id = 73726
  • estado encontrado no banco no início da auditoria:
  • pedidos.ingresso_retirado = 1 para 73726
  • por isso a UI mostrava Carlos José Pauferro como (JÁ RETIRADO)
  • evidência importante da rodada:
  • o toggle em POST /produtor/action.php aceitava marcaingresso e desmarcaingresso sem exigir sessão válida do produtor
  • isso permitia alterar ingresso_retirado diretamente por request HTTP, fora do fluxo autenticado do painel
  • correção aplicada:
  • produtor/action.php agora exige usuário logado
  • a autorização do toggle passa a seguir o campo pecas.email_lista
  • qualquer usuário autenticado cujo login->getEmail() esteja listado em E-mail Receberá lista de compradores pode marcar/desmarcar retirada
  • isso cobre o caso operacional real de admin, produtor e bilheteria quando o e-mail deles estiver cadastrado no mesmo campo usado pela listaopen.php
  • chamada sem sessão agora responde JSON com Sessao expirada. Entre novamente.
  • produtor/listaopen.php passou a abrir um modal claro de login quando o toggle falha por sessão expirada ou falta de autorização, em vez de só alert genérico
  • o modal orienta que o usuário use um login cujo e-mail esteja cadastrado no campo de recebimento da lista da peça
  • o CTA Fazer login agora aponta para produtor/login.php?next=... com retorno automático seguro para a própria listaopen.php
  • produtor/login.php e produtor/action.php passaram a aceitar esse next apenas para paths internos de /produtor/, bloqueando redirect externo
  • observação operacional:
  • o pedido 73726 foi devolvido para ingresso_retirado = 0 durante a auditoria desta rodada
  • validações executadas:
  • php -l produtor/action.php
  • php -l produtor/listaopen.php
  • php -l produtor/login.php
  • curl -X POST https://rionoteatro.com.br/produtor/action.php -d 'act=desmarcaingresso&id=73726' agora retorna erro de sessão expirada sem alterar o banco