<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit; }

// config.php está un nivel arriba (app-api/config.php)
require_once __DIR__ . '/../config.php';

$body     = json_decode(file_get_contents('php://input'), true);
$usuario  = trim($body['usuario']  ?? '');
$password = trim($body['password'] ?? '');

if (empty($usuario) || empty($password)) {
    http_response_code(400);
    echo json_encode(['success' => false, 'message' => 'Usuario y contraseña requeridos']);
    exit;
}

$db = getDB();

$stmt = $db->prepare(
    "SELECT idusuarios_sist, nombre_usr, rango_idrango
     FROM usuarios_sist
     WHERE nombre_usr = ? AND passwd = MD5(?)
     LIMIT 1"
);
$stmt->execute([$usuario, $password]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$user) {
    http_response_code(401);
    echo json_encode(['success' => false, 'message' => 'Usuario o contraseña incorrectos']);
    exit;
}

// Generar token de sesión (válido 8 horas)
$token  = bin2hex(random_bytes(32));
$expira = date('Y-m-d H:i:s', strtotime('+8 hours'));

// Crear tabla admin_sessions si no existe
$db->exec("CREATE TABLE IF NOT EXISTS admin_sessions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    idusuarios_sist INT NOT NULL,
    token VARCHAR(64) NOT NULL,
    expira DATETIME NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY uq_token (token),
    INDEX idx_usuario (idusuarios_sist)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");

// Eliminar sesiones anteriores del mismo usuario y crear nueva
$db->prepare("DELETE FROM admin_sessions WHERE idusuarios_sist = ?")->execute([$user['idusuarios_sist']]);
$db->prepare("INSERT INTO admin_sessions (idusuarios_sist, token, expira) VALUES (?, ?, ?)")
   ->execute([$user['idusuarios_sist'], $token, $expira]);

echo json_encode([
    'success' => true,
    'data' => [
        'token'   => $token,
        'usuario' => $user['nombre_usr'],
        'rango'   => $user['rango_idrango'],
        'expira'  => $expira,
    ]
]);
