Roles
Gestión de roles
Spatie Laravel Permission
El paquete spatie/laravel-permission permite gestionar roles y permisos fácilmente en Laravel.
Se integra con el sistema de autenticación estándar, por lo que puedes asignar y comprobar el rol de cualquier usuario autenticado.
Instalación
|
|
Publica la configuración y migraciones:
|
|
Ejecuta las migraciones:
|
|
Esto creará las tablas necesarias:
rolespermissionsmodel_has_rolesmodel_has_permissionsrole_has_permissions
️ Configuración inicial
En el modelo User.php añade el trait:
|
|
Si tu modelo autenticable es
Student(en lugar deUser), añade el mismouse HasRoles;allí.
Crear roles
Puedes crear roles desde el seeder, Tinker o directamente en código:
|
|
También puedes hacerlo desde un seeder:
|
|
Y dentro de él:
|
|
Ejecuta el seeder:
|
|
Asignar un rol a un usuario
Cuando registras un usuario o estudiante, puedes asignarle un rol inmediatamente:
|
|
También puedes hacerlo dinámicamente:
|
|
Obtener y comprobar roles
Obtener todos los roles del usuario autenticado:
|
|
Si el usuario solo tiene un rol, puedes obtener el primero:
|
|
Comprobar si el usuario tiene un rol específico:
|
|
Comprobar si tiene alguno de varios roles:
|
|
️ Usar roles en vistas (Blade)
@role('admin')
<p>Panel de administración</p>
@endrole
@hasrole('teacher')
<p>Zona del profesor</p>
@endhasrole
También puedes usar directivas condicionales:
@hasanyrole('admin|teacher')
<p>Bienvenido profesor o administrador</p>
@endhasanyrole
Resumen final
| Acción | Ejemplo |
|---|---|
| Instalar paquete | composer require spatie/laravel-permission |
| Publicar y migrar | php artisan vendor:publish ... && php artisan migrate |
| Añadir HasRoles al modelo | use HasRoles; |
| Crear roles | Role::create(['name' => 'student']); |
| Asignar rol a usuario | $user->assignRole('student'); |
| Comprobar rol | auth()->user()->hasRole('admin'); |
| Obtener rol actual | auth()->user()->getRoleNames()->first(); |
| Usuarios con un rol | User::role("admin")->get(); |