78 Seguridad en la Interfaz: Protegiendo Menús y Dashboard con Directivas @can en Laravel 12 🔐

Duración: 16 min
Módulo: Módulo Producción Lección 5 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

🔐 Lección 78: Seguridad en la Interfaz con Directivas @can

En esta sesión de Benji V2, implementamos una capa de seguridad visual esencial. Aunque las rutas ya estaban protegidas, los usuarios sin permisos aún podían ver botones y menús que no podían usar (generando errores 403 frustrantes). Hoy aprendemos a ocultar dinámicamente estos elementos utilizando las directivas de Laravel Spatie.

🛡️ Uso de la Directiva @can en Blade

La directiva @can nos permite condicionar la renderización de HTML en base a los permisos específicos registrados en la base de datos:

  • 📊 Protección del Dashboard: Aplicamos @can a cada "Card" de información. Por ejemplo, el gráfico de "Capital vs. Interés" o el contador de "Roles" ahora solo se muestran si el usuario tiene el permiso ver listado de roles o ver listado de préstamos [02:43].
  • 📂 Menú Lateral (Sidebar) Dinámico: Envolvemos los ítems del menú lateral con la directiva. Si un cliente no tiene permiso para gestionar usuarios, el botón "Usuarios" desaparece por completo de su vista, ofreciendo una interfaz limpia y personalizada [04:21].

⚙️ Optimización de la Caché de Permisos

Un detalle técnico crítico para que los cambios de permisos sean instantáneos:

  • ⚡ Configuración de Spatie: Por defecto, el paquete almacena los permisos en caché por 24 horas. Para el desarrollo y sistemas con cambios frecuentes, ajustamos el tiempo de expiración a 0 horas en el archivo de configuración (config/permission.php). Esto obliga al sistema a consultar directamente la base de datos en cada carga, reflejando nuevos permisos de inmediato sin necesidad de comandos manuales [15:54].

🧪 Pruebas de Roles en Tiempo Real

Validamos la flexibilidad del sistema:

  • 👤 Perfil Cliente: Inicialmente, el dashboard del cliente aparece vacío si no tiene permisos asignados [11:54].
  • 🔄 Asignación Dinámica: Desde la cuenta de Superadministrador, activamos el permiso de "Ver listado de categorías" para el rol Cliente. Al recargar la cuenta del cliente, el menú de categorías aparece instantáneamente, pero sus acciones de "Crear" o "Eliminar" permanecen bloqueadas si no tienen esos permisos específicos [14:13].

Resultado de la Lección

El sistema ahora es contextual. La interfaz se adapta automáticamente a quién la está usando, eliminando ruidos visuales y mejorando la seguridad percibida. El usuario solo ve lo que está autorizado a operar.