# Cuando el menú llega desde la API, ¿quién protege los permisos?

Grupos, jerarquía, enlaces externos y modos de apertura de un menú servido por la API, con códigos de permiso que filtran el menú y protegen rutas y acciones.

> Runlume ofrece funciones de plataforma, aplicaciones empresariales independientes y servicios profesionales que pueden combinarse según las necesidades. Funciones, cuotas y alcance dependen del plan o acuerdo de servicio. Las aplicaciones empresariales pueden elegirse por separado; la colaboración sigue las integraciones y autorizaciones configuradas.

Página original: https://runlume.app/es/blog/admin-design-menu-and-permissions

Guías para desarrolladores · Menú dinámico / Permisos / Integración de aplicaciones

Publicado：2026-09-17 · Autor：Equipo de Runlume

Los menús de un panel suelen llegar del servidor: cada rol ve entradas distintas y añadir páginas no exige publicar el frontend. El trabajo no es dibujar lo que llega, sino someter menú, rutas y acciones al mismo conjunto de reglas.

## El contrato del menú

El menú llega como grupos y elementos. Cada elemento incluye ruta, texto o clave de texto, icono, grupo, orden, marca de oculto, códigos de permiso e hijos. Los grupos fijan el orden de la barra lateral y la jerarquía se limita a cuatro niveles para que una carga anómala no desborde la navegación.

Los elementos externos declaran su dirección y modo de apertura: ventana nueva, misma ventana o incrustado. Incrustar solo funciona si el sitio lo permite: uno que envía `X-Frame-Options: DENY` se verá en blanco.

La tolerancia también corresponde al frontend: rutas extrañas, iconos desconocidos e hijos demasiado profundos se normalizan y dejan una lista de avisos legible. Al conectar una API real conviene revisar esa lista en lugar de esperar el informe de un usuario.

## Las rutas solo conocen páginas registradas

Las rutas dinámicas toman sus componentes de un registro local: la API puede referenciar una página registrada, pero no introducir código nuevo. Una sesión o un permiso ausente termina en la pantalla de acceso o en un 403, nunca en una página vacía.

## Tres capas, un conjunto de reglas

- Menú: los elementos se filtran por código de permiso, así que las entradas no disponibles no se dibujan.
- Rutas: escribir la URL directamente activa el mismo control y termina en 403.
- Acciones: `<Can permission="customer:create">` cubre operaciones como crear o exportar y muestra un estado deshabilitado en lugar de fallar en silencio.

Los códigos de permiso admiten `*` para todo, `module:*` para un módulo completo y coincidencias exactas, de modo que las diferencias de rol caben en una lista. La documentación recoge el contrato completo y la demostración permite comparar dos cuentas: en la misma dirección el administrador ve el registro de auditoría y la cuenta de prueba recibe un 403.

## Páginas relacionadas

- [Plataforma](https://runlume.app/es/platform)
- [Aplicaciones empresariales](https://runlume.app/es/apps)
- [Desarrolladores](https://runlume.app/es/developers)
- [Acerca de Runlume](https://runlume.app/es/about)
