64 Gestión Visual de Permisos por Rol en Laravel Switches Dinámicos y Feedback en Tiempo Real SisFar
Duración: 9 minDescripción
🚀 Lección 64: Interfaz de Asignación de Permisos y Menú Dinámico según el Rol en Laravel 🔐🖥️
En este capítulo avanzamos con la integración del Sistema de Roles y Permisos. Pasamos de la configuración interna en el código del backend a la maquetación visual en el frontend. Aprendemos a condicionar las vistas Blade para ocultar o mostrar dinámicamente los elementos del menú lateral (Sidebar) y comenzamos a desarrollar la pantalla administrativa para gestionar la matriz de permisos de manera interactiva.
🎯 El Objetivo Central
Implementar las directivas de seguridad de Spatie en las plantillas Blade para personalizar la interfaz del usuario según sus privilegios, y estructurar el controlador y la vista para la edición visual de permisos por rol.
🖥️ 1. Ocultamiento Dinámico del Menú en Blade (UX Segura)
Hasta la lección anterior, un usuario con el rol de "Empleado" podía ver todos los botones en la barra lateral, aunque al hacer clic el middleware bloqueara su acceso. Para ofrecer una experiencia de usuario (UX) limpia y profesional, aplicamos las directivas @can de Spatie directamente en el archivo de navegación:
Lógica Condicional: Envolvemos los ítems del menú (como Compras, Configuración o Reportes) dentro de bloques de control.
Blade
@can('ver compras') <li class="nav-item">...</li> @endcan
- Resultado: Si el empleado logueado no posee el permiso exacto ver compras, el menú lateral se reestructura automáticamente eliminando visualmente ese acceso, dejando disponibles únicamente los módulos autorizados (como Nueva Venta o Mi Perfil).
🛠️ 2. Diseño de la Matriz de Permisos (Panel Administrativo)
Damos inicio al desarrollo de la vista de gestión de roles, transformando la base de datos estática en una interfaz interactiva:
- El Controlador (RoleController): Programamos la función edit para que, al seleccionar un rol específico, recupere tanto los datos del rol como la colección completa de los 138 permisos disponibles en la tabla permissions.
- Estructura en la Vista: Diseñamos una interfaz organizada por bloques o módulos (Clientes, Proveedores, Ventas, Inventarios) llena de casillas de verificación (checkboxes). Esto permite al administrador activar o desactivar permisos individuales de forma quirúrgica para cada perfil.
🔄 3. El Método syncPermissions para la Persistencia
Preparamos la lógica que procesará el formulario al guardar los cambios:
- El backend recibe el arreglo de IDs de los permisos seleccionados en la vista.
- Utilizando el método nativo de Spatie $role->syncPermissions($request->permissions), el sistema se encarga de limpiar las relaciones antiguas en la tabla pivote role_has_permissions e insertar las nuevas credenciales de manera atómica, garantizando una actualización en tiempo real sin romper la integridad de la base de datos.
Al concluir este capítulo, los estudiantes sabrán cómo sincronizar la seguridad del backend con la interfaz gráfica en Blade, creando un sistema dinámico que se adapta visualmente al nivel de acceso de cada trabajador de la farmacia. ¡Nos vemos en el próximo video tutorial para ver las pruebas de restricción en vivo!
Lecciones
Apoya este proyecto
Si te gusta nuestro contenido, ¡apóyanos con una donación!
Donar por Airtm Donar por Binance¡Gracias por tu apoyo! ❤️