<?php
/**
 * ICYLAB OS - Procesador de Login Tradicional
 */
require_once 'core/config.php';
require_once 'core/database.php';
require_once 'core/session.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header('Location: /login.php');
    exit;
}

csrf_require_same_origin_request();
csrf_require_valid_request();

$pdo = db();
$email = trim($_POST['email'] ?? '');
$password = $_POST['password'] ?? '';

if (empty($email) || empty($password)) {
    header('Location: /login.php?error=Por favor completa todos los campos');
    exit;
}

// Buscar al usuario
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ? LIMIT 1");
$stmt->execute([$email]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

// Validar existencia y contraseña
if ($user && password_verify($password, $user['password'])) {
    
    // Validar estado
    if ($user['status'] !== 'active') {
        header('Location: /login.php?error=Tu cuenta está inactiva. Contacta al administrador.');
        exit;
    }

    // Evita fijación de sesión al elevar una sesión anónima a autenticada.
    session_regenerate_id(true);

    // Iniciar Sesión respetando tu estructura nativa
    $_SESSION['user'] = array(
        'id' => $user['id'],
        'name' => $user['name'],
        'email' => $user['email'],
        'role' => $user['role'],
        'status' => $user['status']
    );

    // Limpiamos los permisos cacheados para que se recarguen frescos
    unset($_SESSION['user']['permissions']);
    
    // Actualizar último login
    $stmtUpdate = $pdo->prepare("UPDATE users SET last_login = NOW() WHERE id = ?");
    $stmtUpdate->execute([$user['id']]);

    // Redirigir al dashboard (asegúrate de que esta ruta sea la correcta)
    header('Location: /modules/dashboard/');
    exit;

} else {
    // Credenciales incorrectas
    usleep(350000);
    header('Location: /login.php?error=Credenciales incorrectas');
    exit;
}
