Skip to content

Rutas

Para agregar una nueva ruta, ejecute el comando:

Terminal window
php artisan rk:route

Esto mostrará el siguiente menú interactivo:

┌ Selecciona una opción ───────────────────────────────────────┐
│ › ● 🛠️ Crear nueva ruta │
│ ○ 🗑️ Eliminar ruta existente │
│ ○ 🔄 Reescribir rutas │
│ ○ 🚪 Salir │
└──────────────────────────────────────────────────────────────┘
  1. Identificador único: Establezca el ID único de la ruta, que se usará como nombre de la ruta.
┌ Identificador único de la ruta. ─────────────────────────────┐
│ id_ruta │
└──────────────────────────────────────────────────────────────┘
  1. Nodo padre: Seleccione donde insertar la ruta. Solo se mostrarán los nodos que son grupos.
┌ Insertar en: Actual (raiz): / ───────────────────────────────┐
│ 📁 central_app │
└──────────────────────────────────────────────────────────────┘
  1. Permisos: Digite el permiso correspondiente para acceder a la ruta.
┌ Permiso de acceso a la ruta. ────────────────────────┐
│ acceder-admin-general │
└──────────────────────────────────────────────────────┘
  1. Controlador: Seleccione un controlador previamente creado. Para archivos Livewire solo se requiere el archivo; para controladores se requiere el archivo y la función.
┌ Elige una de las rutas de partida: ──────────────────────────┐
│ ⚡️ Livewire: app/Livewire │
└──────────────────────────────────────────────────────────────┘
  1. Método HTTP: Seleccione el método HTTP asociado a la ruta.
┌ Método HTTP asociado a la ruta, si es un grupo. ─────────────┐
│ get │
└──────────────────────────────────────────────────────────────┘
  1. Roles: Seleccione los roles que tendrán acceso a esta ruta.
┌ A qué roles permite el acceso a la ruta. ────────────────────┐
│ admin_general │
└──────────────────────────────────────────────────────────────┘
  1. Navegación: Opcionalmente, cree una navegación para esta ruta.
┌ ¿Deseas crear una navegación para esta ruta? ────────────────┐
│ › ● Sí, crear navegación │
│ ○ No, solo crear ruta │
└──────────────────────────────────────────────────────────────┘

El sistema generará automáticamente una ruta con la siguiente estructura:

RkRoute::make('id_ruta')
->setParentId('central_app')
->setAccessPermission('acceder-admin-general')
->setUrlMethod('get')
->setUrlController('App\Livewire\ListPermisos')
->setRoles(['admin_general'])
->setItems([])
->setEndBlock('id_ruta'),

Para eliminar una ruta existente:

  1. Ejecute el comando: php artisan rk:route
  2. Seleccione la opción “🗑️ Eliminar ruta existente”
  3. Navegue por el árbol de rutas hasta encontrar la ruta deseada
  4. Confirme la eliminación
┌ ⚠️ ¿Estás seguro de que deseas eliminar el elemento con ID 'id_ruta'? Esta acción no se puede deshacer. ┐
│ Yes │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Para actualizar el árbol de rutas o aplicar formato con Laravel Pint:

  1. Ejecute: php artisan rk:route
  2. Seleccione ”🔄 Reescribir rutas”
  3. Confirme la operación
┌ 🔄 ¿Estás seguro de que deseas reescribir todos los archivos? Esto actualizará todas las entidads existentes. ┐
│ Yes │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

El paquete está diseñado para establecer permisos en un único punto, sirviendo como:

  • Seeder de la aplicación
  • Middleware automático
  • Vinculación con el archivo de navegación

Para sincronizar los permisos en base de datos y asignarlos a los roles configurados:

Terminal window
php artisan rk:access

Considerando la siguiente ruta de ejemplo:

RkRoute::make('id_ruta')
->setParentId('admin_general')
->setAccessPermission('acceder-admin-general')
->setUrlMethod('get')
->setUrlController('App\Livewire\Central\Acceso\Permiso\ListPermisos')
->setRoles(['admin_general'])
->setItems([])
->setEndBlock('id_ruta'),
  • setAccessPermission: Se usa como middleware para acceder a la ruta
  • setRoles: Los roles configurados recibirán automáticamente ese permiso al sincronizar

Al ejecutar php artisan rk:access, los permisos se sincronizarán y los cambios se aplicarán correctamente en la base de datos.