74 Create Permisos en el Sistema de Reserva de Citas Medicas con LARAVEL(PHP-MySql) FullStack

Duración: 11 min
Módulo: 🔑 Seguridad, Roles y Permisos Lección 4 de 15

Descripció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.