74 Create Permisos en el Sistema de Reserva de Citas Medicas con LARAVEL(PHP-MySql) FullStack
Duración: 11 minDescripción
📝🔑 Lección 74: Creación de Permisos con Spatie Basados en Rutas
Esta lección aborda el siguiente paso en la implementación de Spatie Laravel Permission: la creación de los Permisos específicos que luego serán asignados a los roles. La estrategia consiste en nombrar cada permiso basándose directamente en el nombre de la ruta a la que otorga acceso.
1. Preparación de Usuarios y Permisos
Para asegurar la correcta asignación, primero se añade un usuario de prueba adicional y luego se comienza la creación de permisos.
- Ajuste del Seeder: Se modifica el seeder para incluir un quinto usuario de prueba, de modo que el conteo de usuarios y roles coincida para futuras asignaciones [00:34].
- Modelo de Permiso: Se comienza a utilizar el modelo Permission de Spatie para crear cada permiso individual dentro del seeder [01:02].
2. Estrategia de Creación de Permisos
La clave de esta sección es la lógica para definir y asignar los permisos de manera coherente.
- Permiso = Nombre de Ruta: Se establece que el nombre de cada permiso (name) en la base de datos será exactamente igual al name de la ruta de Laravel a la que se desea controlar el acceso. Esto simplifica la lógica del middleware [02:44].
- Rutas de Administración: El primer bloque de permisos se genera para todas las rutas del módulo admin.usuarios, incluyendo las acciones CRUD (Create, Read, Update, Delete) [03:22]:
- admin.usuarios.index (Listado)
- admin.usuarios.create (Formulario de creación)
- admin.usuarios.storage (Guardar en DB)
- admin.usuarios.show, admin.usuarios.edit, admin.usuarios.update, admin.usuarios.confirm_delete, y admin.usuarios.destroy [00:04:17 - 00:05:10].
3. Asignación de Roles a Permisos
Una vez creado un permiso, se procede a asignarlo a los roles que deben tener acceso a esa funcionalidad.
- Método syncPermissions: Se utiliza el método syncPermissions para asignar uno o más permisos a un rol. Aunque la lección muestra un ejemplo con syncRoles, la idea central es asignar los roles definidos (como admin, secretaria, doctor, etc.) a los permisos recién creados [05:58].
- Lógica de Acceso: En el ejemplo de la ruta admin.usuarios.index, se determina que solo el Administrador (admin) debe tener acceso total a la lista de usuarios. Este proceso debe replicarse para cada ruta, definiendo qué rol específico (admin, secretaria, doctor, etc.) tiene permitido usar esa ruta [00:06:22 - 00:07:00].
- Verificación en Base de Datos: Una prueba de migración y siembra (migrate:fresh --seed) confirma que las tablas de Permisos y la tabla de relación role_has_permission se llenan correctamente, estableciendo la relación entre el Rol 1 (Admin) y los permisos creados [00:08:56 - 00:10:02].
Próxima Lección: La siguiente etapa será completar la asignación de permisos para todas las demás rutas del sistema y luego empezar a utilizar el middleware de Spatie para proteger las rutas.
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! ❤️