Files
sistema_para_juego/shared/bootstrap.php

51 lines
1.6 KiB
PHP
Executable File

<?php
/**
* Bootstrap File
*
* Carga y configura todos los componentes esenciales de la aplicación.
*/
// Iniciar sesión si no está iniciada
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
// Habilitar logging de errores
ini_set('display_errors', 0); // No mostrar errores al usuario
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/../logs/php_errors.log'); // Ruta centralizada
// Cargar variables de entorno
if (file_exists(__DIR__ . '/../.env')) {
$lines = file(__DIR__ . '/../.env', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
if (strpos(trim($line), '#') === 0) continue;
if (strpos($line, '=') === false) continue;
list($key, $value) = explode('=', $line, 2);
$_ENV[trim($key)] = trim($value);
}
}
// 1. Cargar la conexión a la base de datos
require_once __DIR__ . '/database/connection.php';
// 2. Cargar el helper de autenticación JWT
require_once __DIR__ . '/auth/jwt.php';
// 3. Cargar helpers generales (que ahora pueden asumir que la DB y JWT existen)
require_once __DIR__ . '/utils/helpers.php';
// 4. Realizar la autenticación y obtener los datos del usuario
// Esto se hace una sola vez y los datos se guardan en la clase JWTAuth
try {
$userData = JWTAuth::requireAuth();
} catch (Exception $e) {
// Si la autenticación falla, redirigir al login
// Esto es más seguro que mostrar un 'die()', ya que no expone la estructura de archivos.
header('Location: /login.php');
exit;
}
// 5. Cargar el gestor de traducciones (que depende de los datos del usuario para el idioma)
require_once __DIR__ . '/translations/manager.php';