<?php
/**
 * Archivo de protección de autenticación
 * Incluir en páginas que requieren login
 * Desarrollado por U-Site.app
 */

// Asegurar que config.php esté incluido
if (!function_exists('isUserLoggedIn')) {
    require_once __DIR__ . '/config/config.php';
}

// Verificar si la instalación está completada
if (!isInstallationCompleted()) {
    header('Location: install.php');
    exit('Sistema no instalado. <a href="install.php">Instalar ahora</a>');
}

// Verificar autenticación - redirigir al login si no está logueado
if (!isUserLoggedIn()) {
    // Si es una petición AJAX, devolver JSON
    if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && 
        strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
        http_response_code(401);
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode([
            'success' => false,
            'error' => 'Sesión expirada. Por favor, inicie sesión.',
            'redirect' => 'login.php'
        ]);
        exit;
    }
    
    // Para páginas normales, redirigir al login
    header('Location: login.php');
    exit('Acceso denegado. <a href="login.php">Iniciar sesión</a>');
}

// Enfermeros solo pueden ver su portal, no el panel admin
if (isEnfermero()) {
    header('Location: enfermero_portal.php');
    exit;
}

// Verificar timeout de sesión (ya se hace en config.php, pero por seguridad)
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > SESSION_TIMEOUT)) {
    session_destroy();
    session_start();
    
    // Si es AJAX
    if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && 
        strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
        http_response_code(401);
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode([
            'success' => false,
            'error' => 'Sesión expirada por inactividad.',
            'redirect' => 'login.php'
        ]);
        exit;
    }
    
    header('Location: login.php?session_expired=1');
    exit;
}

// Actualizar última actividad
$_SESSION['last_activity'] = time();
?>