35 🔑 Error 403 Acceso Denegado por Permisos de Rol | Sistema de Parqueo Laravel 12 FullStack
Duración: 10 minDescripción
35 🔑 Índice de Lección: Error 403 Acceso Denegado por Permisos de Rol (Laravel 12 FullStack)
Esta lección se enfoca en resolver la vulnerabilidad que permitía a los usuarios no autorizados acceder a funcionalidades sensibles si conocían la URL.
1. Protección de Rutas con Middleware de Permisos
Se implementa la protección a nivel de las rutas para evitar el acceso directo a cualquier funcionalidad para la que el usuario no tenga un permiso específico.
- Vulnerabilidad Inicial: Se demuestra que el Operador todavía puede acceder a rutas como /usuarios al ingresar la URL directamente, a pesar de que la opción fue removida del menú [00:57].
- Aplicación de ->can() en Rutas: Se utiliza el método ->middleware('can:permiso.index') (o simplemente :can) en cada definición de ruta en el archivo web.php [01:25].
- Sintaxis: La sintaxis usada es ->middleware('can:nombre.del.permiso'), donde nombre.del.permiso coincide con el nombre exacto definido en el seeder (ej., admin.usuarios.index para la ruta principal de usuarios) [01:36].
- Implementación Masiva: Se repite este proceso para todas las rutas (index, create, store, edit, update, destroy, show) de todos los módulos del sistema (Ajustes, Roles, Usuarios, Espacios, Tarifas, Clientes, etc.) [03:27].
- Resultado de la Protección: Al intentar acceder a una ruta no autorizada, Laravel dispara el error HTTP 403 (Unauthorized), bloqueando el acceso a nivel de backend [02:31].
2. Personalización de la Página de Error 403
Para ofrecer un mensaje más amigable y claro al usuario, se personaliza la vista del error 403.
- Creación de la Vista de Error: Se crea el archivo 403.blade.php dentro de la carpeta resources/views/errors/ [06:05].
- Contenido Personalizado: Se añade código HTML y estilos para mostrar un mensaje claro en lugar del mensaje predeterminado de Laravel [07:04]:
- Código de Error: 403
- Mensaje: "Acceso Denegado" [07:16].
- Cuerpo del Mensaje: Se explica que el usuario no tiene los permisos necesarios y se sugiere contactar al administrador.
- Navegación: Se incluye un botón de "Volver al inicio" que dirige a la ruta principal del dashboard (/admin) [07:31].
- Verificación Final: Se confirma que el Operador tiene un menú restringido y, si intenta ingresar a /admin/roles, el sistema muestra el mensaje de Acceso Denegado 403 [08:43].
3. Conclusión del Módulo
Se finaliza el desarrollo del módulo de Roles y Permisos, declarando la funcionalidad del sistema completa.
- Sistema Funcional: El sistema de parqueo queda terminado, con todos sus módulos (Roles y Permisos, Usuarios, Tickets, Reportes, etc.) y una seguridad basada en roles correctamente implementada [09:07].
- Próximo Paso: El siguiente tutorial cubrirá el respaldo del sistema utilizando un repositorio de GitHub [09:34].