<?php
// ✅ CONFIGURACIÓN DE SESIÓN EXTENDIDA (12 HORAS)
ini_set('session.gc_maxlifetime', 43200);
ini_set('session.cookie_lifetime', 43200);
ini_set('session.cookie_httponly', 1);

// ======================================================
// 🔹 Iniciar sesión si no está activa
// ======================================================
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// ======================================================
// 🌍 DETECCIÓN AUTOMÁTICA DE RUTAS
//    (FUNCIONA AUNQUE CAMBIES LA CARPETA DEL PROYECTO)
// ======================================================

// Ruta absoluta:   /var/www/html/factuxhn3
define('BASE_PATH', dirname(__DIR__));

// Carpeta base URL: /factuxhn3
define('BASE_URL', '/' . basename(BASE_PATH));

// ======================================================
// 🛡️ Validar sesión solo si no estamos en login/logout
// ======================================================

// Nombre del script actual
$current_script = basename($_SERVER['PHP_SELF']);

// Archivos que NO requieren sesión
$public_files = ['login.php', 'procesar_login.php', 'instalador.php'];

if (!in_array($current_script, $public_files)) {

    if (!isset($_SESSION['usuario_id'])) {
        header("Location: " . BASE_URL . "/login.php");
        exit();
    }
}

// ======================================================
// 🔗 Conectar a la base de datos (archivo separado)
// ======================================================
require_once __DIR__ . '/db.php';

// ======================================================
// 🧩 Variables comunes de usuario
// ======================================================
$usuario_id  = $_SESSION['usuario_id']  ?? 0;
$rol         = $_SESSION['rol']         ?? 'invitado';
$alcance     = $_SESSION['alcance']     ?? 'local'; // local | global
$empresa_id  = $_SESSION['empresa_id']  ?? 0;
$sucursal_id = $_SESSION['sucursal_id'] ?? 0;

$es_principal = false;

// Si no hay empresa o sucursal, evitar errores
if ($empresa_id <= 0 || $sucursal_id <= 0) {
    // Opcional: redirigir o forzar logout
    // header("Location: " . BASE_URL . "/logout.php");
    // exit();
}

// ======================================================
// 🟦 Determinar si la sucursal es principal
// ======================================================
// Admin y supervisor global → acceso completo
if ($rol === 'admin' || $alcance === 'global') {

    $es_principal = true;

} else {

    // Supervisor o cajero local → revisar si su sucursal es principal
    if ($sucursal_id > 0) {
        $stmt = $conn->prepare("
            SELECT es_principal
            FROM sucursales
            WHERE empresa_id = ?
              AND id = ?
            LIMIT 1
        ");
        $stmt->bind_param("ii", $empresa_id, $sucursal_id);
        $stmt->execute();

        $res = $stmt->get_result()->fetch_assoc();
        $es_principal = isset($res['es_principal']) && $res['es_principal'] == 1;
    }
}

// Guardar bandera en sesión
$_SESSION['es_principal'] = $es_principal;

// ======================================================
// 🔐 Función para validar roles
// ======================================================
function verificarRol(array $permitidos) {

    $rol = $_SESSION['rol'] ?? 'invitado';

    if (!in_array($rol, $permitidos)) {
        header("Location: " . BASE_URL . "/acceso_denegado.php");
        exit();
    }
}

// ======================================================
// 🛡️ Función para validar que pertenece a la empresa y sucursal
// ======================================================
function validarEmpresaSucursal($empresa_id_val, $sucursal_id_val) {
    $emp = $_SESSION['empresa_id']  ?? 0;
    $suc = $_SESSION['sucursal_id'] ?? 0;

    if ($emp != $empresa_id_val || $suc != $sucursal_id_val) {
        header("Location: " . BASE_URL . "/acceso_denegado.php");
        exit();
    }
}

?>