O que é

O Painel Administrativo é a área restrita do app para usuários com perfil de administrador. Ele centraliza todas as ferramentas de gestão da expedição que não estão disponíveis para participantes regulares: aprovação de novos cadastros, gerenciamento de usuários, publicação de conteúdo em massa, envio de notificações globais, importação de histórico do WhatsApp e configurações avançadas do app.

O Painel Admin é organizado em 6 abas: Visão Geral (dashboard com métricas), Aprovações (cadastros pendentes), Usuários (lista completa), Conteúdo (notícias, enquetes, documentos), Checklist (progresso dos pilotos) e Configurações (parâmetros globais do app). Apenas usuários com role == 'admin' ou role == 'superadmin' no Firestore têm acesso a esta área.

O superadministrador (e-mail hawkinf@gmail.com) tem acesso irrestrito e é o único que pode promover outros usuários a administradores. Administradores regulares podem gerenciar conteúdo e aprovações, mas não podem alterar outros admins ou as configurações estruturais do app.

Aprovações

A aba de Aprovações é onde os administradores analisam e processam novos cadastros de participantes. Quando um usuário se cadastra no app (por e-mail ou Google), seu status inicial é "Aguardando aprovação" e ele não tem acesso às funcionalidades até que um admin aprove sua conta.

A aba exibe quatro sub-abas: Aguardando (aprovação pendente), Aprovados, Rejeitados e Bloqueados. Cada solicitação mostra nome, e-mail, método de login, data do cadastro e, se fornecida, uma mensagem de apresentação.

  1. Toque em um cadastro pendente para ver as informações completas do solicitante.
  2. Verifique se o participante é um piloto esperado para a expedição.
  3. Toque em Aprovar para liberar o acesso. O usuário recebe um e-mail de confirmação automático.
  4. Toque em Rejeitar para negar o acesso. Informe o motivo (opcional) — o usuário receberá um e-mail de rejeição.
  5. Use Bloquear para casos onde o acesso deve ser negado permanentemente (e-mail não reconhecido, duplicata etc.).
Atenção: a rejeição envia um e-mail automático ao usuário. Certifique-se de que o usuário realmente não deve ter acesso antes de rejeitar. Para erros de cadastro (e-mail errado, nome incompleto), prefira aprovar e orientar o usuário a corrigir nas Configurações.

Gestão de usuários

A aba de Usuários exibe a lista completa de todos os usuários cadastrados no app, incluindo aprovados, pendentes, rejeitados e bloqueados. Cada usuário é listado com nome, e-mail, status, data de cadastro, último acesso e role (client, admin, superadmin).

Ações disponíveis na gestão de usuários:

  • Alterar status — mudar entre Aprovado, Rejeitado e Bloqueado a qualquer momento.
  • Promover a admin — promover um usuário aprovado para administrador (apenas superadmin).
  • Ver perfil completo — ver todos os dados do usuário, incluindo e-mail e informações privadas não exibidas publicamente.
  • Enviar notificação direta — enviar um aviso específico para um usuário ou grupo.
  • Reset de conta — redefinir o estado da conta do usuário (ver seção de Reset abaixo).
Privacidade: administradores têm acesso aos e-mails de todos os usuários para fins de gestão da expedição. Esses dados são tratados de acordo com os termos de uso do app e não podem ser compartilhados com terceiros.

Gestão de conteúdo

A aba de Conteúdo oferece um painel centralizado para gerenciar todas as publicações do app: notícias, enquetes, documentos, itens de checklist e eventos da agenda. Cada tipo de conteúdo tem uma sub-aba dedicada com listagem completa e ações de criação, edição e exclusão.

O painel de Conteúdo também exibe estatísticas de engajamento: quais notícias foram mais lidas, quais enquetes tiveram maior participação, quais documentos foram mais baixados e quais itens do checklist têm mais pilotos com pendência.

A aba de Notificações no painel de Conteúdo permite enviar um aviso push para todos os participantes de uma vez, com título e mensagem customizados. Esta funcionalidade é reservada para comunicados importantes e deve ser usada com moderação.

Dica para admins: use a aba de Conteúdo para ver o progresso do checklist de todos os pilotos e identificar quem tem itens críticos em aberto próximo da data de partida.

Reset de dados

A funcionalidade de Reset de conta permite que administradores redefinam o estado de um usuário específico no Firestore — útil quando um piloto precisa recomeçar o processo de cadastro, quando há dados corrompidos na conta, ou quando um participante é substituído por outro na expedição.

  1. Na aba Usuários, localize o usuário a ser resetado.
  2. Toque no nome do usuário para ver o perfil completo.
  3. Toque em "Reset de conta" no final da página de detalhes.
  4. Leia o aviso de confirmação — o reset é irreversível.
  5. Confirme digitando o e-mail do usuário no campo de verificação.
  6. Toque em Confirmar reset. Todos os listeners do Firestore são encerrados antes da exclusão para evitar deadlocks.
Atenção crítica: o reset de conta remove todos os dados do usuário no Firestore (voos, votos, progresso do checklist). Esta ação não pode ser desfeita. Use somente quando absolutamente necessário. O reset encerra todos os Firestore listeners ativos antes de executar a deleção, garantindo estabilidade do app.

Problemas comuns

O Painel Admin não aparece no menu para minha conta.
O Painel Admin só é exibido para usuários com role 'admin' ou 'superadmin' no Firestore. Se você deve ser administrador mas não vê o painel, peça ao superadmin que verifique sua role. Após a alteração, faça logout e login para recarregar as permissões.

Aprovei um usuário mas ele ainda não consegue acessar o app.
Após a aprovação, o usuário precisa fazer logout e login novamente para que as permissões atualizadas sejam carregadas. O e-mail de aprovação é enviado automaticamente com instruções. Se o e-mail não chegou, verifique a coleção 'mail' no Firestore para ver o status de envio.

O reset de conta travou o app (tela congela após confirmar).
Esta situação foi corrigida em versões recentes do app. Se ainda ocorrer, feche e reabra o app. O reset pode ter sido concluído mesmo que o app tenha travado — verifique no Firestore se os dados do usuário foram removidos antes de tentar novamente.

Logs de admin: todas as ações administrativas (aprovações, rejeições, resets) são registradas no Firestore com timestamp e e-mail do admin responsável, para auditoria posterior.