<?php
// admin/auth_guard.php
declare(strict_types=1);

// cabeçalhos para evitar cache
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Pragma: no-cache");

$cookieParams = session_get_cookie_params();
session_set_cookie_params([
  'lifetime' => 0,
  'path'     => $cookieParams['path']     ?? '/',
  'domain'   => $cookieParams['domain']   ?? '',
  'secure'   => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off',
  'httponly' => true,
  'samesite' => 'Lax',
]);
ini_set('session.use_strict_mode', '1');

session_start();

// 15 minutos ABSOLUTOS após o login
define('SESSION_LIFETIME', 15 * 60); // 900s

// Se não logado -> login
if (empty($_SESSION['auth']['user_id'])) {
  header('Location: /roulette-admin-v6/admin/login.php?redirect=' . urlencode($_SERVER['REQUEST_URI'] ?? '/roulette-admin-v6/admin/'));
  exit;
}

// verifica expiração absoluta
$expiresAt = $_SESSION['auth']['expires_at'] ?? 0;
if (!$expiresAt || time() >= $expiresAt) {
  // sessão expirada
  $_SESSION = [];
  if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000, $params['path'], $params['domain'], $params['secure'], $params['httponly']);
  }
  session_destroy();
  header('Location: /roulette-admin-v6/admin/login.php?expired=1');
  exit;
}

// (Opcional) se quiser renovar por atividade, descomente:
// $_SESSION['auth']['expires_at'] = time() + SESSION_LIFETIME;

// variável para o timer no front
$remaining = max(0, $expiresAt - time());