verificar-rutas.php
Verificación previa al despliegue de la API v2.
Comprueba de una sola pasada lo que de otro modo se descubre en runtime, ruta por ruta y usuario por usuario:
- Que todos los módulos cargan (LogicException por las invariantes de Ruta, TypeError si algún handler no es un Closure).
- Que no hay acciones duplicadas entre módulos.
- Que toda página declarada en ámbito TRACKING existe en la tabla
paginasy está habilitada. - Que las rutas TRACKINGWEB no declaran página por error.
- Que las acciones que escriben en $_SESSION lo declaran.
- Qué acciones parecen de escritura y no declaran conexionUnica.
- Que toda acción invocada por el frontend existe en el registro.
El descubrimiento de módulos usa el mismo glob() que index.php: son la misma fuente de verdad, de modo que el script no puede dar por bueno un módulo que la API no sirva.
Uso: php backend/bin/verificar-rutas.php
Código de salida 0 si todo es correcto, 1 si hay errores, de modo que puede encadenarse en un despliegue.
Table of Contents
Constants
- DIR_FRONTEND = __DIR__ . '/../../frontend'
- DIR_RUTAS = __DIR__ . '/../api/v2_test/rutas'
- ESCRIBEN_SESION = ['login', 'cambiar_campania', 'update_user_permisos']
- Acciones cuyo handler modifica $_SESSION. Deben declarar escribeSesion: true, o el despachador liberará el bloqueo de sesión antes de ejecutarlas y sus escrituras no se persistirán.
- EXCLUIDOS = '#[\\\\/](node_modules|dist|vendor|\.git|\.idea)[\\\\/]#'
- Directorios que no forman parte del código propio.
- PATRONES_ACCION = ['/[\'"]?action[\'"]?\s*[:=]\s*[\'"]([a-zA-Z0-9_]+)[\'"]/', '/append\(\s*[\'"]action[\'"]\s*,\s*[\'"]([a-zA-Z0-9_]+)[\'"]/', '/action=([a-zA-Z0-9_]+)/']
- Formas en que el frontend puede declarar la acción. La primera cubre el objeto literal de $.ajax; la segunda, las subidas con FormData; la tercera, las cadenas de consulta construidas a mano.
- PREFIJOS_ESCRITURA = ['crear_', 'insert_', 'eliminar_', 'delete_', 'modificar_', 'update_', 'actualizar_', 'anadir_', 'add_', 'ajuste_', 'ajustar_', 'asignar_', 'deshabilitar_', 'habilitar_', 'reajustar_', 'cambio_', 'set_']
- Prefijos que delatan una acción de escritura por su nombre.
Constants
DIR_FRONTEND
public
mixed
DIR_FRONTEND
= __DIR__ . '/../../frontend'
DIR_RUTAS
public
mixed
DIR_RUTAS
= __DIR__ . '/../api/v2_test/rutas'
ESCRIBEN_SESION
Acciones cuyo handler modifica $_SESSION. Deben declarar escribeSesion: true, o el despachador liberará el bloqueo de sesión antes de ejecutarlas y sus escrituras no se persistirán.
public
mixed
ESCRIBEN_SESION
= ['login', 'cambiar_campania', 'update_user_permisos']
Lista mantenida a mano, pero convierte un fallo silencioso —el caso del token CSRF que el servidor nunca llega a guardar— en un error visible.
EXCLUIDOS
Directorios que no forman parte del código propio.
public
mixed
EXCLUIDOS
= '#[\\\\/](node_modules|dist|vendor|\.git|\.idea)[\\\\/]#'
PATRONES_ACCION
Formas en que el frontend puede declarar la acción. La primera cubre el objeto literal de $.ajax; la segunda, las subidas con FormData; la tercera, las cadenas de consulta construidas a mano.
public
mixed
PATRONES_ACCION
= ['/[\'"]?action[\'"]?\s*[:=]\s*[\'"]([a-zA-Z0-9_]+)[\'"]/', '/append\(\s*[\'"]action[\'"]\s*,\s*[\'"]([a-zA-Z0-9_]+)[\'"]/', '/action=([a-zA-Z0-9_]+)/']
PREFIJOS_ESCRITURA
Prefijos que delatan una acción de escritura por su nombre.
public
mixed
PREFIJOS_ESCRITURA
= ['crear_', 'insert_', 'eliminar_', 'delete_', 'modificar_', 'update_', 'actualizar_', 'anadir_', 'add_', 'ajuste_', 'ajustar_', 'asignar_', 'deshabilitar_', 'habilitar_', 'reajustar_', 'cambio_', 'set_']