75 Asignar Roles y Permisos en el Sistema Reserva de Citas Medicas con LARAVEL(PHP-MySql) FullStack
Duración: 15 minDescripción
🔑👥 Lección 75: Asignación Final de Roles y Permisos en el Sistema
Esta lección culmina el proceso de configuración de roles y permisos con el paquete Spatie, realizando la asignación lógica de acceso a las rutas del sistema y corrigiendo errores cruciales en los seeders para un funcionamiento correcto.
1. Definición de Acceso por Módulo
Se completa la definición en el seeder de qué roles tienen acceso a cada grupo de rutas (permisos), utilizando el método syncPermissions para asignar roles a cada permiso creado [05:58].
- Módulo Usuarios (CRUD): 🛑 Acceso restringido solo al rol admin [01:29].
- Módulo Secretarias (CRUD): 🛑 Acceso restringido solo al rol admin [02:40].
- Módulo Pacientes (CRUD): ✅ Acceso permitido para admin y secretaria [02:57].
- Módulos Consultorios, Doctores y Horarios (CRUD): ✅ Acceso permitido para admin y secretaria [00:03:35 - 00:04:41].
2. Asignación de Roles a Usuarios Iniciales
Se asignan los roles definidos a los usuarios de prueba creados en el seeder utilizando el método assignRole [05:55]:
- Los cinco usuarios de prueba iniciales reciben los roles admin, secretaria, doctor, paciente y usuario respectivamente [06:08].
- Los 200 usuarios generados por el Factory (para simular pacientes) reciben automáticamente el rol paciente [08:13].
3. Solución de Errores Críticos (Debugging) 🐛
La ejecución de php artisan migrate:fresh --seed reveló errores que se corrigieron para asegurar el funcionamiento del sistema de roles.
- Problema de Orden en el Seeder: El sistema fallaba porque los usuarios intentaban asignarse un rol (ej. 'admin') antes de que ese rol existiera en la base de datos [09:44].
- Solución: Se reordenó el seeder para que la Creación de Roles se ejecute antes de la Creación de Usuarios [10:07].
- Problema con el Modelo Paciente: Se generaba un error al intentar asignar roles a los pacientes creados por el Factory [10:45].
- Solución: Fue necesario añadir el trait HasRoles y declarar la variable protected $guard_name = 'web'; en el modelo Paciente.php para resolver la discrepancia del guard y permitir la correcta asignación de roles de Spatie [00:11:00 - 00:12:25].
Una vez corregidos, el sistema migra y siembra la base de datos con éxito, y la tabla de relaciones confirma que el rol admin posee todos los permisos, y la secretaria los permisos de gestión asignados [12:58].
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! ❤️