<?php
/** AURA FARMING — Etapa 12: central de segurança do jogador */
require_once __DIR__.'/../config/config.php';
require_once __DIR__.'/../config/database.php';
require_once __DIR__.'/../includes/functions.php';
requireLogin();
$uid=(int)$_SESSION['usuario_id'];

if($_SERVER['REQUEST_METHOD']==='POST'){
  try{
    if(!validarCsrfToken($_POST[CSRF_TOKEN_NAME]??''))throw new RuntimeException('Sessão expirada.');
    $action=(string)($_POST['action']??'');
    if($action==='trust_device'){
      $deviceId=(int)($_SESSION['device_id']??0);
      $pdo->prepare('UPDATE af_dispositivos SET confiavel=1,ultima_revisao_em=NOW() WHERE id=? AND usuario_id=?')->execute([$deviceId,$uid]);
      afLogSeguranca($pdo,'dispositivo_marcado_confiavel',0,[],$uid,null,$deviceId);
      setFlash('success','Este dispositivo foi marcado como confiável.');
    }elseif($action==='revoke_others'){
      $count=encerrarOutrasSessoes($pdo,$uid,(int)($_SESSION['auth_session_id']??0));
      afLogSeguranca($pdo,'sessoes_revogadas',0,['quantidade'=>$count],$uid,null,(int)($_SESSION['device_id']??0));
      setFlash('success',$count.' sessão(ões) desconectada(s).');
    }elseif($action==='request_review'){
      $partidaId=(int)($_POST['partida_id']??0);
      $st=$pdo->prepare("SELECT id,antifraude_status FROM af_partidas WHERE id=? AND usuario_id=? AND status='finalizada' LIMIT 1");$st->execute([$partidaId,$uid]);$match=$st->fetch();
      if(!$match||!in_array($match['antifraude_status'],['revisao','rejeitada'],true))throw new RuntimeException('Esta partida não pode ser enviada para revisão.');
      $exists=$pdo->prepare("SELECT id FROM af_eventos_seguranca WHERE partida_id=? AND usuario_id=? AND categoria='pedido_revisao_jogador' AND criado_em>=DATE_SUB(NOW(),INTERVAL 24 HOUR) LIMIT 1");$exists->execute([$partidaId,$uid]);
      if($exists->fetchColumn())throw new RuntimeException('A revisão desta partida já foi solicitada nas últimas 24 horas.');
      afLogSeguranca($pdo,'pedido_revisao_jogador',0,['mensagem'=>sanitize($_POST['mensagem']??'')],$uid,$partidaId,(int)($_SESSION['device_id']??0));
      setFlash('success','Pedido de revisão enviado à equipe de segurança.');
    }
  }catch(Throwable $e){setFlash('error',$e->getMessage());}
  header('Location: '.SITE_URL.'/pages/seguranca.php');exit;
}

$resumo=afResumoSeguranca($pdo,$uid);
$st=$pdo->prepare("SELECT id,sessao_id,pontuacao_total,pontuacao_validada,antifraude_status,antifraude_score,liveness_score,liveness_desafios,liveness_aprovados,finalizada_em
                   FROM af_partidas WHERE usuario_id=? AND status='finalizada' ORDER BY id DESC LIMIT 15");$st->execute([$uid]);$partidas=$st->fetchAll()?:[];
$st=$pdo->prepare("SELECT id,nome,plataforma,navegador,confiavel,risco,contas_vinculadas,bloqueado_ate,ultimo_acesso FROM af_dispositivos WHERE usuario_id=? AND ativo=1 ORDER BY ultimo_acesso DESC");$st->execute([$uid]);$devices=$st->fetchAll()?:[];
$status=$resumo['usuario']['seguranca_status']??'normal';
$pageTitle='Segurança';$activePage='perfil';require_once __DIR__.'/../includes/header.php';
?>
<header class="app-header"><a href="<?=SITE_URL?>/pages/perfil.php" class="btn-back">← Perfil</a><div class="logo-inline"><span class="logo-main">AURA</span><span class="logo-sub">SECURITY</span></div><div class="aura-counter">🛡️ ETAPA 12</div></header>
<main class="page-content security-center"><?=renderFlash()?>
  <section class="security-hero security-hero--<?=esc($status)?>">
    <div class="security-hero__shield">🛡️</div><div><small>STATUS DA CONTA</small><h1><?=strtoupper(esc($status))?></h1><p>Proteção de login, dispositivo, interações e partidas em tempo real.</p></div>
    <div class="security-risk"><strong><?= (int)($resumo['usuario']['risco_conta']??0) ?></strong><span>RISCO / 100</span></div>
  </section>

  <div class="security-stats-grid">
    <article><span>✓</span><strong><?= (int)($resumo['partidas']['aprovadas']??0) ?></strong><small>APROVADAS</small></article>
    <article><span>⌛</span><strong><?= (int)($resumo['partidas']['revisao']??0) ?></strong><small>EM REVISÃO</small></article>
    <article><span>✕</span><strong><?= (int)($resumo['partidas']['rejeitadas']??0) ?></strong><small>NÃO VALIDADAS</small></article>
    <article><span>📱</span><strong><?= (int)$resumo['dispositivos'] ?></strong><small>DISPOSITIVOS</small></article>
  </div>

  <section class="card security-actions-card"><div><small>CONTROLE DA CONTA</small><h2>Sessões e dispositivos</h2></div>
    <form method="post"><?=camposCsrf()?><input type="hidden" name="action" value="trust_device"><button class="btn btn-outline-cyan">✓ CONFIAR NESTE DISPOSITIVO</button></form>
    <form method="post" onsubmit="return confirm('Desconectar todas as outras sessões?')"><?=camposCsrf()?><input type="hidden" name="action" value="revoke_others"><button class="btn btn-secondary">🚪 DESCONECTAR OUTROS APARELHOS</button></form>
  </section>
  <section class="card security-actions-card"><div><small>MODERAÇÃO E PRIVACIDADE</small><h2>Controle de interações</h2></div>
    <a class="btn btn-outline-cyan" href="<?=SITE_URL?>/pages/bloqueios.php">🛡️ USUÁRIOS BLOQUEADOS</a>
    <a class="btn btn-secondary" href="<?=SITE_URL?>/pages/denunciar.php">🚩 ENVIAR DENÚNCIA</a>
  </section>

  <div class="section-title">🧪 Validação das partidas</div>
  <div class="security-match-list">
  <?php if(!$partidas):?><div class="empty-state"><span>🛡️</span><h3>Nenhuma partida concluída</h3></div><?php endif;?>
  <?php foreach($partidas as $m):$stt=(string)$m['antifraude_status'];?>
    <article class="security-match security-match--<?=esc($stt)?>">
      <div class="security-match__icon"><?= $stt==='aprovada'?'✓':($stt==='revisao'?'⌛':'!') ?></div>
      <div><small><?=date('d/m/Y H:i',strtotime((string)$m['finalizada_em']))?></small><strong><?=number_format((float)$m['pontuacao_total'],2,',','.')?> pontos</strong><span><?= $stt==='aprovada'?'Validada e liberada no ranking':($stt==='revisao'?'Aguardando análise':'Pontuação não validada') ?></span></div>
      <div class="security-match__score"><b><?= (int)$m['antifraude_score'] ?></b><small>RISCO</small></div>
      <?php if(in_array($stt,['revisao','rejeitada'],true)):?><form method="post" class="security-review-form"><?=camposCsrf()?><input type="hidden" name="action" value="request_review"><input type="hidden" name="partida_id" value="<?=(int)$m['id']?>"><button>Solicitar revisão</button></form><?php endif;?>
    </article>
  <?php endforeach;?>
  </div>

  <div class="section-title">📱 Dispositivos reconhecidos</div>
  <div class="security-device-list"><?php foreach($devices as $d):?><article><span><?=str_contains(strtolower((string)$d['plataforma']),'android')?'🤖':(str_contains(strtolower((string)$d['plataforma']),'ios')?'🍎':'💻')?></span><div><strong><?=esc($d['nome'])?></strong><small><?=esc($d['plataforma'].' • '.$d['navegador'])?> • <?=date('d/m H:i',strtotime((string)$d['ultimo_acesso']))?></small></div><b class="<?=!empty($d['confiavel'])?'trusted':''?>"><?=!empty($d['confiavel'])?'CONFIÁVEL':'RISCO '.(int)$d['risco']?></b></article><?php endforeach;?></div>

  <div class="section-title">🔍 Atividade recente</div>
  <div class="security-events"><?php if(!$resumo['eventos']):?><p>Nenhum alerta recente.</p><?php endif;?><?php foreach($resumo['eventos'] as $e):?><article><i class="severity-<?=esc($e['severidade'])?>"></i><div><strong><?=esc(str_replace('_',' ',ucfirst($e['categoria'])))?></strong><small><?=date('d/m/Y H:i',strtotime((string)$e['criado_em']))?> • <?=strtoupper(esc($e['severidade']))?></small></div><span>+<?= (int)$e['pontos'] ?></span></article><?php endforeach;?></div>

  <?php if(afIsAdmin()):?><a class="btn btn-primary mt-16" href="<?=SITE_URL?>/pages/admin.php">🛠️ ABRIR PAINEL ADMINISTRATIVO</a><?php endif;?>
</main>
<?php require_once __DIR__.'/../includes/navbar.php';require_once __DIR__.'/../includes/footer.php';?>
