<?php
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

require_once dirname(__DIR__) . '/../config/db.php';

class Login
{
    public array $errors = [];

    public function __construct()
    {
        if (isset($_POST['login'])) {
            $this->doLogin();
        }
    }

    private function doLogin(): void
    {
        /* ✅ CSRF */
        if (
            empty($_SESSION['csrf']) ||
            empty($_POST['csrf']) ||
            !hash_equals($_SESSION['csrf'], $_POST['csrf'])
        ) {
            $this->errors[] = 'Token inválido';
            return;
        }

        // regenerar token
        $_SESSION['csrf'] = bin2hex(random_bytes(32));

        $usuario  = strtoupper(trim($_POST['user_name'] ?? ''));
        $password = trim($_POST['user_password'] ?? '');

        if ($usuario === '' || $password === '') {
            $this->errors[] = 'Usuario y contraseña son obligatorios.';
            return;
        }

        if (!isset(USUARIOS[$usuario])) {
            $this->errors[] = 'Usuario no existe.';
            return;
        }

        $storedPassword = USUARIOS[$usuario]['password'];

        /* ✅ COMPATIBILIDAD HÍBRIDA */
        $loginCorrecto = false;

        // Caso 1: password hash moderno
        if (password_verify($password, $storedPassword)) {
            $loginCorrecto = true;
        }

        // Caso 2: texto plano (legacy)
        if ($password === $storedPassword) {
            $loginCorrecto = true;

            /* 🔄 Migración automática a hash */
            // ⚠️ Esto SOLO funcionará si puedes guardar cambios (BD o archivo)
            // Ejemplo (simulado):
            // USUARIOS[$usuario]['password'] = password_hash($password, PASSWORD_DEFAULT);
        }

        if (!$loginCorrecto) {
            $this->errors[] = 'Contraseña incorrecta.';
            return;
        }

        /* ✅ LOGIN OK */
        $_SESSION['user_login_status'] = true;
        $_SESSION['user_name']   = $usuario;
        $_SESSION['user_tienda'] = USUARIOS[$usuario]['tienda'];

        header('Location: inicio.php');
        exit;
    }

    public function isUserLoggedIn(): bool
    {
        return !empty($_SESSION['user_login_status']);
    }
}