<?php
// ───────────────────────── Configuración de sesión ──────────────────────────
$duration = 8 * 3600;
ini_set('session.gc_maxlifetime', $duration);
session_set_cookie_params([
    'lifetime' => $duration,
    'path'     => '/',
    'secure'   => isset($_SERVER['HTTPS']),
    'httponly' => true,
    'samesite' => 'Lax',
]);
session_start();
require_once __DIR__ . '/includes/user_activity_log.php';

// ───────────────────────── Node API config ──────────────────────────────────
// PHP Admin ahora valida credenciales contra Node (/api/auth/login)
// Puedes sobre-escribir con variable de entorno COMPRANET_NODE_API_BASE
$nodeApiBase = getenv('COMPRANET_NODE_API_BASE');
if (!$nodeApiBase) {
    $nodeApiBase = 'https://app.compranet.com.co';
}

function cpn_post_json(string $url, array $payload): array
{
    $json = json_encode($payload);
    if ($json === false) {
        return ['ok' => false, 'error' => 'Error preparando solicitud.'];
    }

    // Preferir cURL si está disponible
    if (function_exists('curl_init')) {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_TIMEOUT, 15);
        $resp = curl_exec($ch);
        $err = curl_error($ch);
        $http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if ($resp === false) {
            return ['ok' => false, 'error' => 'Error conectando a API: ' . ($err ?: 'desconocido')];
        }

        $data = json_decode($resp, true);
        if (!is_array($data)) {
            return ['ok' => false, 'error' => 'Respuesta inválida de API.'];
        }
        $data['_http'] = $http;
        return $data;
    }

    // Fallback (si allow_url_fopen está habilitado)
    $ctx = stream_context_create([
        'http' => [
            'method' => 'POST',
            'header' => "Content-Type: application/json\r\n",
            'content' => $json,
            'timeout' => 15,
        ]
    ]);

    $resp = @file_get_contents($url, false, $ctx);
    if ($resp === false) {
        return ['ok' => false, 'error' => 'No fue posible conectar con la API.'];
    }
    $data = json_decode($resp, true);
    if (!is_array($data)) {
        return ['ok' => false, 'error' => 'Respuesta inválida de API.'];
    }
    return $data;
}

// ───────────────────── Procesar formulario ──────────────────────────────────
$error = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $email = trim($_POST['email'] ?? '');
    $pass  =       $_POST['password'] ?? '';

    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $error = 'Formato de correo inválido.';
    } else {
        $url = rtrim($nodeApiBase, '/') . '/api/auth/login';
        $resp = cpn_post_json($url, ['email' => $email, 'password' => $pass]);

        if (!isset($resp['ok']) || $resp['ok'] !== true) {
            $msg = $resp['error']['message'] ?? $resp['error'] ?? 'Credenciales inválidas.';
            $error = is_string($msg) ? $msg : 'Credenciales inválidas.';
        } else {
            $user = $resp['data'] ?? null;
            if (!is_array($user) || empty($user['id']) || empty($user['nombre']) || empty($user['apellido'])) {
                $error = 'Respuesta inválida del servidor de autenticación.';
            } else {
                // Roles válidos: 1 administrador, 2 editor, 3 impresor, 4 contabilidad
                $roleId = isset($user['roleId']) ? (int)$user['roleId'] : 0;
                if (!in_array($roleId, [1, 2, 3, 4], true)) {
                    $error = 'El usuario no tiene un rol válido para ingresar.';
                } else {
                    session_regenerate_id(true);
                    $_SESSION['user'] = $user;
                    // Guardar token para futuras llamadas a Node (ej. creación de usuarios)
                    if (isset($user['token']) && is_string($user['token'])) {
                        $_SESSION['node_token'] = $user['token'];
                    }

                    cpn_activity_log_event('Autenticación', 'auth.login', 'Inició sesión');
                    header('Location: index.php');
                    exit;
                }
            }
        }
    }
}
?>
<!DOCTYPE html>
<html lang="es">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Inicio de Sesión</title>

    <!-- Estilos originales -->
    <link href="/vendor/fontawesome-free/css/all.min.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Nunito:200,300,400,600,700,800,900" rel="stylesheet">
    <link href="/css/sb-admin-2.min.css" rel="stylesheet">
    <link href="/css/compranet.css" rel="stylesheet">
</head>

<body class="bg-gradient-primary">

    <div class="container">
        <div class="row justify-content-center">
            <div class="col-xl-10 col-lg-12 col-md-9">
                <div class="card o-hidden border-0 shadow-lg my-5">
                    <div class="card-body p-0">
                        <div class="row">
                            <!-- Imagen / logo definido por tu CSS -->
                            <div class="col-lg-6 d-none d-lg-block bg-login-image"></div>

                            <!-- Formulario idéntico al original -->
                            <div class="col-lg-6">
                                <div class="p-5">
                                    <div class="text-center">
                                        <h1 class="h4 text-gray-900 mb-4">¡Bienvenido de nuevo!</h1>
                                    </div>
                                    <form class="user" action="login.php" method="post">
                                        <div class="form-group">
                                            <input name="email" type="email"
                                                class="form-control form-control-user"
                                                placeholder="Correo electrónico" required>
                                        </div>
                                        <div class="form-group">
                                            <input name="password" type="password"
                                                class="form-control form-control-user"
                                                placeholder="Contraseña" required>
                                        </div>
                                        <button class="btn btn-primary btn-user btn-block">Iniciar Sesión</button>
                                    </form>

                                    <?php if ($error): ?>
                                        <div class="alert alert-danger mt-3">
                                            <?= htmlspecialchars($error) ?>
                                        </div>
                                    <?php endif; ?>
                                </div>
                            </div>

                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Scripts originales -->
    <script src="/vendor/jquery/jquery.min.js"></script>
    <script src="/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
    <script src="/vendor/jquery-easing/jquery.easing.min.js"></script>
    <script src="/js/sb-admin-2.min.js"></script>
</body>

</html>