<?php
require_once __DIR__.'/../config/config.php';require_once __DIR__.'/../config/database.php';require_once __DIR__.'/../includes/functions.php';requireLogin();$uid=(int)$_SESSION['usuario_id'];$current=(int)$_SESSION['auth_session_id'];
if($_SERVER['REQUEST_METHOD']==='POST'){
 if(!validarCsrfToken($_POST[CSRF_TOKEN_NAME]??''))setFlash('error','Sessão expirada.');elseif(($_POST['action']??'')==='logout_others'){$n=encerrarOutrasSessoes($pdo,$uid,$current);setFlash('success',$n.' sessão(ões) encerrada(s).');}elseif(($_POST['action']??'')==='revoke'){$sid=(int)($_POST['session_id']??0);$st=$pdo->prepare('UPDATE af_sessoes SET revogada_em=NOW() WHERE id=? AND usuario_id=? AND id<>?');$st->execute([$sid,$uid,$current]);setFlash('success','Sessão encerrada.');}header('Location: '.SITE_URL.'/pages/dispositivos.php');exit;
}
$st=$pdo->prepare('SELECT s.id,s.ip_address,s.criada_em,s.ultima_atividade,s.expira_em,s.revogada_em,d.nome,d.plataforma,d.navegador FROM af_sessoes s JOIN af_dispositivos d ON d.id=s.dispositivo_id WHERE s.usuario_id=? ORDER BY s.ultima_atividade DESC LIMIT 30');$st->execute([$uid]);$sessoes=$st->fetchAll();$pageTitle='Dispositivos';$activePage='perfil';require_once __DIR__.'/../includes/header.php';?>
<header class="app-header"><a class="btn-back" href="<?=SITE_URL?>/pages/perfil.php">← Perfil</a><div class="logo-inline"><span class="logo-main">SESSÕES</span></div><span></span></header><main class="page-content"><?=renderFlash()?><div class="card mb-16"><h1 class="section-heading">📱 Dispositivos conectados</h1><p class="text-muted">Controle onde sua conta está conectada. A sessão atual não pode ser removida por engano.</p></div><?php foreach($sessoes as $s):$ativa=empty($s['revogada_em'])&&strtotime($s['expira_em'])>time();?><div class="card device-card"><div class="device-icon"><?=str_contains(strtolower($s['plataforma']??''),'android')?'📱':'💻'?></div><div class="device-info"><strong><?=esc($s['nome'])?></strong><span><?=esc($s['ip_address'])?> • último acesso <?=date('d/m/Y H:i',strtotime($s['ultima_atividade']))?></span><span class="<?=$ativa?'status-active':'status-offline'?>"><?=(int)$s['id']===$current?'Sessão atual':($ativa?'Ativa':'Encerrada')?></span></div><?php if($ativa&&(int)$s['id']!==$current):?><form method="post"><?=camposCsrf()?><input type="hidden" name="action" value="revoke"><input type="hidden" name="session_id" value="<?=$s['id']?>"><button class="mini-danger">Encerrar</button></form><?php endif?></div><?php endforeach?><form method="post" class="mt-16"><?=camposCsrf()?><input type="hidden" name="action" value="logout_others"><button class="btn btn-secondary" onclick="return confirm('Encerrar todas as outras sessões?')">🔒 ENCERRAR OUTRAS SESSÕES</button></form></main><?php require_once __DIR__.'/../includes/navbar.php';require_once __DIR__.'/../includes/footer.php';?>
