<?php
session_set_cookie_params([
    'lifetime' => 0,
    'path'     => '/',
    'secure'   => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off',
    'httponly'  => true,
    'samesite' => 'Lax'
]);
session_start();

/**
 * ========================================
 * 🧠 AUTENTICAÇÃO E CONTROLE DE SESSÃO
 * ========================================
 */

// 🔹 Verifica login
if (!isset($_SESSION['usuario'])) {
    header('Location: login.php');
    exit;
}

// 🔹 Controle de expiração de sessão
$tempoLimite = 360 * 360; // 1 hora
if (isset($_SESSION['ultimo_acesso']) && (time() - $_SESSION['ultimo_acesso'] > $tempoLimite)) {
    session_destroy();
    header('Location: login.php?expired=1');
    exit;
}
$_SESSION['ultimo_acesso'] = time();

/**
 * ========================================
 * 🏢 CONTROLE DE EMPRESA ATIVA
 * ========================================
 *  - Define empresa ativa após login
 *  - Permite alternar empresa (futuro)
 *  - Impede módulos sem contexto
 */

// 🔧 Se o sistema ainda não definiu a empresa ativa
if (empty($_SESSION['cdempresa'])) {
    // Se o login já gravou uma lista de empresas do usuário
    if (!empty($_SESSION['empresas']) && is_array($_SESSION['empresas'])) {
        // Define a primeira como empresa ativa
        $_SESSION['cdempresa'] = $_SESSION['empresas'][0]['cdempresa'];
        $_SESSION['empresa_nome'] = $_SESSION['empresas'][0]['nomefantasia'] ?? 'Empresa';
    } else {
        // ⚠️ Se não tiver empresa definida, força o logout
        header('Location: login.php?noempresa=1');
        exit;
    }
}

// 🔹 (Opcional) Permite troca de empresa via POST
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['cdempresa'])) {
    $_SESSION['cdempresa'] = (int) $_POST['cdempresa'];
    session_write_close();
    header('Location: index.php');
    exit;
}
