esp/api/index.php

68 lines
1.9 KiB
PHP

<?php
// Router simple basado en ?r=nombre (sin .php)
$route = isset($_GET['r']) ? preg_replace('/[^a-zA-Z0-9_\-]/', '', $_GET['r']) : '';
if (!$route) {
require_once __DIR__ . '/bootstrap.php';
json_error('Ruta no especificada', 404);
}
$map = [
// Dispositivos (consolidado)
'get_dispositivos' => 'api_dispositivos.php',
'add_dispositivo' => 'api_dispositivos.php',
'update_dispositivo' => 'api_dispositivos.php',
'delete_dispositivo' => 'api_dispositivos.php',
'edit_dispositivo' => 'api_dispositivos.php',
// Sectores (consolidado)
'get_sectores' => 'api_sectores.php',
'add_sector' => 'api_sectores.php',
'update_sector' => 'api_sectores.php',
'delete_sector' => 'api_sectores.php',
// Puertos (consolidado)
'get_puertos' => 'api_puertos.php',
'update_puertos' => 'api_puertos.php',
'asignar_puertos' => 'api_puertos.php',
// Reglas de automatización
'get_reglas' => 'api_reglas.php',
'save_reglas' => 'api_reglas.php',
'delete_regla' => 'api_reglas.php',
'toggle_regla' => 'api_reglas.php',
// Otros
'add_entidad' => 'add_entidad.php',
'mqtt_publish' => 'mqtt_publish.php',
'mqtt_config' => 'mqtt_config.php',
'login' => 'login.php',
'logout' => 'logout.php',
'me' => 'me.php',
'estado' => 'estado.php'
];
if (!isset($map[$route])) {
require_once __DIR__ . '/bootstrap.php';
json_error('Ruta no encontrada', 404);
}
require_once __DIR__ . '/bootstrap.php';
$whitelist = ['login', 'estado'];
if (!in_array($route, $whitelist, true)) {
if (session_status() !== PHP_SESSION_ACTIVE) {
session_start();
}
if (empty($_SESSION['user'])) {
json_error('No autenticado', 401);
}
}
$target = __DIR__ . '/' . $map[$route];
if (!file_exists($target)) {
json_error('Handler no disponible', 500);
}
// Incluir el handler seleccionado
require $target;