54 Permisos en las rutas y vistas en el curso de LARAVEL (PHP y MySql) FullStack
Duración: 15 minDescripción
🔒 Lección 54: Permisos en las Rutas y Vistas (Autorización con Spatie)
Este capítulo es crucial ya que finaliza la configuración de roles y permisos (Spatie Laravel Permission) al implementar la lógica de autorización para restringir el acceso a rutas y elementos de la interfaz de usuario.
1. 📄 Asignación Final de Permisos y Roles
El instructor completa la configuración de los permisos antes de la implementación:
- Permisos de Rutas Completados: Se revisa el archivo RoleSeeder para confirmar que se han creado todos los permisos basados en los nombres de las rutas web (admin.index, usuarios.create, etc.) y que estos permisos han sido sincronizados (syncRoles()) con los roles de Administrador y Usuario según su nivel de acceso [00:17].
- Asignación a Usuarios de Prueba: Se asignan los roles a los usuarios de prueba creados en el DatabaseSeeder:
- Ejecución: Se ejecuta php artisan migrate:fresh --seed para actualizar la base de datos y aplicar los nuevos permisos y roles a todos los usuarios y rutas [02:44].
2. 📝 Restricción en la Interfaz (Vistas Blade)
El primer paso de la autorización es ocultar los elementos del menú y la interfaz que el usuario no debería ver:
- Directiva @can: Se utiliza la directiva de Blade @can para controlar la visibilidad de los enlaces en el menú de navegación [07:37].
- Ejemplo: Para el enlace "Usuarios", se envuelve con @can('usuarios.index') y @endcan. Esto asegura que el enlace solo será visible si el usuario autenticado tiene el permiso de acceder a la ruta nombrada como usuarios.index (es decir, solo para el administrador) [08:19].
- Resultado: Al ingresar como usuario normal, el elemento "Usuarios" desaparece del menú lateral [08:29].
3. 🛑 Restricción en el Acceso a Rutas (Middleware)
La restricción en las vistas no es suficiente, ya que un usuario aún podría acceder a rutas sensibles escribiendo la URL directamente en el navegador. La solución es aplicar el middleware de permisos:
- Problema: Aunque el menú esté oculto, un usuario normal puede acceder a una ruta de administrador como /admin/usuarios/create si conoce la URL [08:42].
- Solución (Middleware): Se añade el middleware can de Spatie a las definiciones de rutas que deben ser protegidas. Este middleware utiliza el nombre de la ruta para verificar si el usuario autenticado tiene el permiso para acceder [10:59].
- Sintaxis: Se añade el middleware a la definición de la ruta en routes/web.php usando la sintaxis middleware('can:nombre.de.la.ruta') [11:08].
- Resultado: Al intentar acceder a una ruta sin permiso (como usuario normal), el sistema ahora devuelve una página de error de autorización ("Esta acción no está autorizada para este usuario") [11:29].
Verificación Final: Se demuestra que la lógica funciona correctamente:
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! ❤️