<?php
session_start();
require_once __DIR__ . '/../config/db_auto.php';
require_once __DIR__ . '/system_logger.php';
require_once __DIR__ . '/../config/paths.php'; // <-- Añadir para tener BASE_URL y url()

$logger = SystemLogger::getInstance();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $usuario = trim($_POST['usuario'] ?? '');
    $password = $_POST['password'] ?? '';

    if ($usuario && $password) {
        $stmt = $pdo->prepare('SELECT id, usuario, password, rol FROM usuarios WHERE usuario = ? LIMIT 1');
        $stmt->execute([$usuario]);
        $user = $stmt->fetch();

        if ($user && password_verify($password, $user['password'])) {
            // Seguridad: regenerar id de sesión
            session_regenerate_id(true);
            $_SESSION['user_id'] = $user['id'];
            $_SESSION['usuario'] = $user['usuario'];
            $_SESSION['nombre'] = $user['usuario']; // Usar usuario como nombre ya que no hay columna nombre
            $_SESSION['rol'] = $user['rol'];
            $_SESSION['ultima_actividad'] = time(); // Iniciar contador de inactividad

            // Log exitoso
            $logger->auth('Inicio de sesión exitoso', "Usuario: {$user['usuario']} ({$user['rol']}) desde IP: " . ($_SERVER['REMOTE_ADDR'] ?? 'N/A'));

            header('Location: ' . url('views/menu.php'));
            exit;
        } else {
            // Log fallido con más detalles de seguridad
            $logger->warning('Intento de inicio de sesión fallido', "Usuario: $usuario desde IP: " . ($_SERVER['REMOTE_ADDR'] ?? 'N/A') . " User-Agent: " . ($_SERVER['HTTP_USER_AGENT'] ?? 'N/A'));
            $error = 'Usuario o contraseña incorrectos.';
        }
    } else {
        $logger->warning('Intento de inicio de sesión con campos vacíos', "IP: " . ($_SERVER['REMOTE_ADDR'] ?? 'N/A'));
        $error = 'Debes completar ambos campos.';
    }
    // Redirigir con error
    header('Location: ' . url('views/login.php?error=' . urlencode($error)));
    exit;
} else {
    header('Location: ' . url('views/login.php'));
    exit;
}
