33 🔑 Cargando Permisos Agrupados en el Sistema | Parqueo Laravel 12 FullStack

Duración: 23 min
Módulo: 🛡️ Permisos y Control de Acceso Lección 4 de 6

¡Contenido Exclusivo!

Adquiere este curso para tener acceso inmediato a esta y a **todas las lecciones Premium**.

Inscribirse Ahora por $10.00 Acceso instantáneo de por vida y código fuente incluido.

Descripción

33 🔑 Índice de Lección: Cargando Permisos Agrupados en el Sistema (Laravel 12 FullStack)

La lección 33 se enfoca en la creación de la interfaz de asignación de permisos y en la manipulación de los datos del seeder para presentar los 55 permisos del sistema de manera organizada y agrupada por módulos.

1. Creación de Rutas y Funcionalidad del Controlador

Se definen las rutas necesarias para acceder a la vista de permisos de un rol específico y se crea el método en el controlador para extraer y agrupar los datos.

  • Definición de Nuevas Rutas: Se añaden dos rutas al archivo web.php dentro del grupo roles [01:32]:
    1. admin.roles.permisos: Ruta de tipo GET para visualizar los permisos, aceptando el ID del rol.
    2. admin.roles.update.permisos: Ruta de tipo POST para actualizar los permisos.
  • Actualización de Permisos: Se ejecuta migrate:fresh para añadir estas dos nuevas rutas como permisos en la base de datos, totalizando 55 permisos [03:52].
  • Asignación de URL: Se actualiza el botón "Asignar permisos" en la vista roles.index para que apunte a la nueva ruta admin.roles.permisos, enviando el role ID [04:11].
  • Función permisos en RoleController:
    • Se crea el método permisos para recibir el ID del rol.
    • Se utiliza el modelo Spatie Permission con el método all() para obtener la lista completa de los 55 permisos del sistema [06:16].

2. Agrupación Lógica de Permisos

Para una mejor visualización, se implementa una lógica en el controlador que agrupa los permisos, los cuales estaban previamente desordenados.

  • Método de Agrupación: Se utiliza el método groupBy() en la colección de permisos para organizarlos por módulos [11:44].
  • Lógica de Agrupación (strpos): La agrupación se realiza analizando el nombre del permiso (permission->name) y buscando una subcadena específica (ej., ajuste, roles, usuarios, espacios, tickets, etc.) [12:12].
  • Módulos Agrupados: Se definen los grupos principales del sistema de parqueo:
    • ajustes, roles, usuarios, espacios, tarifas, clientes, vehículo, tickets, facturaciones, y reportes [13:59].

3. Diseño de la Interfaz de Asignación

Se crea la vista roles.permisos.blade.php y se utiliza la agrupación para construir un formulario visualmente limpio.

  • Vista y Formulario:
    • Se utiliza una plantilla similar a la vista create o edit [08:05].
    • Se configura el formulario para usar el método POST y enviar datos a la ruta admin.roles.update.permisos, incluyendo el role ID en la URL [16:38].
  • Visualización Agrupada:
    • Se utiliza un foreach doble para iterar sobre la colección agrupada ($permisos) [17:33].
    • Cada grupo se muestra en una columna de tamaño col-md-3 (para mostrar cuatro columnas por fila) con el nombre del módulo como título [18:04].
  • Implementación de Checkboxes:
    • Dentro de cada grupo, se itera para mostrar cada permiso individualmente como un checkbox [19:10].
    • Los inputs se nombran como un array (permisos[]) y su value es el ID del permiso [20:00].
  • Visualización del Estado: Se implementa la lógica para que los checkboxes del Super Administrador aparezcan chequeados por defecto, reflejando su asignación total [21:40].
  • Próximo Paso: El próximo capítulo se enfocará en la implementación del controlador para actualizar y guardar los cambios de permisos en la base de datos [22:57].