<?php
/**
 * Fallback User Helper
 * Obtiene un usuario real de la base de datos cuando no hay sesión activa
 *
 * ⚠️ ADVERTENCIA DE SEGURIDAD ⚠️
 * Esta función es INSEGURA y solo debe usarse en DESARROLLO.
 * En producción, SIEMPRE debe haber una sesión válida.
 *
 * DEPRECATED: Usar includes/require-auth.php en su lugar
 */

use App\Services\Database;

if (!function_exists('getFallbackUser')) {
    function getFallbackUser() {
        // En producción, lanzar excepción
        if (($_ENV['APP_ENV'] ?? 'production') !== 'development') {
            throw new RuntimeException(
                'getFallbackUser() solo está disponible en modo development. ' .
                'Usar require-auth.php para validación de sesión en producción.'
            );
        }

        // Advertencia en logs
        if (class_exists('App\Services\Logger')) {
            $logger = new App\Services\Logger();
            $logger->logSecurity(
                'fallback_user_used',
                'INSECURE: getFallbackUser() was called - this should not happen in production',
                'warning'
            );
        }

        static $fallbackUser = null;

        if ($fallbackUser !== null) {
            return $fallbackUser;
        }

        try {
            $db = Database::getInstance();

            // Obtener el primer usuario activo de la base de datos
            // Prioridad: administrador > asesor
            $user = $db->fetchOne(
                "SELECT id, email, nombre, rol, created_at
                 FROM admins
                 WHERE activo = 1
                 ORDER BY rol = 'administrador' DESC, id ASC
                 LIMIT 1"
            );

            if ($user) {
                $fallbackUser = $user;
                return $fallbackUser;
            }

            // Si no hay usuarios en BD, crear uno por defecto (solo como último recurso)
            return [
                'id' => 1,
                'nombre' => 'Usuario Sistema',
                'email' => 'sistema@sistema.com',
                'rol' => 'administrador'
            ];

        } catch (Exception $e) {
            // Si falla la BD, último recurso
            return [
                'id' => 1,
                'nombre' => 'Usuario Sistema',
                'email' => 'sistema@sistema.com',
                'rol' => 'administrador'
            ];
        }
    }
}
