PATCH V50 - ADM ENTRAR NO PAINEL DO REVENDEDOR
============================================================

PACOTE DE ORIGEM ANALISADO
--------------------------
launcher(20260818-070210).zip
SHA-256: ee8cc358fb568b4523782195e6e395034708aa2c6f056da7dc7b8385a3307594

Este é um patch acumulativo: mantém todas as melhorias dos PATCHES V48 e V49
e acrescenta o acesso temporário do administrador ao painel do revendedor.

COMO INSTALAR
-------------
1. Faça um backup da pasta launcher e do arquivo launcher/api/max.db.
2. Extraia este patch DIRETAMENTE DENTRO da pasta launcher atual.
3. Confirme a substituição dos arquivos existentes.
4. Não apague nem substitua o banco launcher/api/max.db.
5. Atualize a página do painel.

Não precisa configurar Cron Job nem executar migração manual.

O QUE FOI IMPLEMENTADO
----------------------
1. Botão "Entrar no painel"
   - Aparece somente para o ADM, na lista Gerenciar Revendedores.
   - Cada revendedor possui seu próprio botão.
   - Antes de entrar, o sistema mostra uma confirmação com o nome da revenda.

2. Mesma visão do revendedor
   - Não solicita nem altera a senha do revendedor.
   - Usa temporariamente o usuário real da revenda na sessão do ADM.
   - Mostra os mesmos clientes, saldo, menus e permissões da revenda escolhida.
   - Abre a mesma tela mac.php usada pelo login normal quando a permissão
     Ativar / Gerenciar Clientes está liberada.
   - Se essa permissão não existir, abre outra tela permitida para que o ADM
     nunca fique preso sem a opção de retorno.

3. Retorno seguro ao administrador
   - Um aviso amarelo permanente informa qual revendedor está sendo visualizado.
   - O botão "Voltar ao painel ADM" restaura a conta administrativa original.
   - A conta original é conferida novamente no banco antes da restauração.

4. Proteções de segurança
   - Entrada e saída somente por POST com token contra CSRF.
   - O ID da sessão é regenerado ao entrar e ao voltar.
   - Não permite iniciar acessos encadeados de uma revenda para outra.
   - O endpoint não executa INSERT, UPDATE ou DELETE no banco.

ATENÇÃO
-------
Durante o acesso temporário, o ADM está operando com a conta da revenda. Portanto,
qualquer ação confirmada dentro do painel será aplicada aos dados daquela revenda,
da mesma forma que aconteceria se o próprio revendedor realizasse a ação.

O QUE NÃO FOI ALTERADO
----------------------
- Revendedores, usuários, senhas, permissões, clientes, saldos e vencimentos.
- O fluxo de puxar e cadastrar o cliente pela primeira vez.
- Cliente duplicado, ponto adicional e troca de aparelho do V48.
- A permissão de renovação manual e o fluxo bancário do V49.
- Renovação automática, webhook e reconciliação de pagamentos.

ARQUIVOS DO PATCH
-----------------
- admin_impersonation.php (novo)
- revendedores.php
- includes/layout.php
- mac.php
- permissoes_menu.php
- editar_permissoes.php
- painel_reseller.php
- renovar.php
- sw.js
- actions/customer_actions.php
- includes/reseller_permissions.php
- includes/customer_identity.php
- LEIA-ME_PATCH_V50_ADM_ENTRAR_PAINEL_REVENDEDOR.txt

VALIDAÇÕES EXECUTADAS
---------------------
- Os 7 revendedores do banco analisado foram resolvidos corretamente pelo novo fluxo.
- As consultas de entrada, permissões e restauração do ADM foram validadas.
- Proteções POST, CSRF e regeneração de sessão verificadas.
- Confirmado que o novo endpoint não possui comandos de escrita no banco.
- Aviso e botão de retorno confirmados no layout compartilhado.
- Sintaxe JavaScript da tela Gerenciar Revendedores aprovada.
- Estrutura e balanceamento dos blocos PHP aprovados.
- Todos os arquivos funcionais dos patches V48 e V49 permaneceram idênticos.
- Banco original preservado e não incluído no patch.

OBSERVAÇÃO
----------
Este patch não contém banco de dados, APKs, clientes, saldos ou credenciais. Ele
substitui somente os arquivos de código listados acima.
