Instalacion y uso de componente Entrust en Laravel 5.2
En esta guia haremos el uso del componente Entrust que sirve para administrar roles y permisos de los usuarios de nuestra aplicacion.
- Añadimos la siguiente linea a nuestro composer.json y realizar un composer update
"zizaco/entrust": "dev-laravel-5"
- Agregamos en el archivo config/app.php
Zizaco\Entrust\EntrustServiceProvider::class, //dentro del array providers 'Entrust' => \Zizaco\Entrust\EntrustFacade::class, //dentro del array aliases
- Agregar los 3 middlewares que nos trae por defecto el componente en nuestro archivo app/Http/Kernel.php dentro del array $routeMiddleware
'role' => Zizaco\Entrust\Middleware\EntrustRole::class, 'permission' => Zizaco\Entrust\Middleware\EntrustPermission::class, 'ability' => Zizaco\Entrust\Middleware\EntrustAbility::class,
- Configurar el componente para el acceso a la BD, ejecutar en la terminal el siguiente comando
php artisan vendor:publish
Este comando generará un archivo entrust.php dentro de config/entrust.php y pasamos a configurarlo
'role' => '\App\Role', //agregamos el namespace del modelo Role 'permission' => '\App\Permission', //agregamos el namespace del modelo Permission
- Generar la migraciones y tablas
php artisan entrust:migration
Este comando generará un archivo dentro de database/migrations/_entrust_setup_tables.php y luego ejecutar
php artisan migrate
Este comando nos creara 4 tablas en la BD ya relacionadas con la tabla users: roles, permissions, role_user, permissions_role
- Crear los modelos Role, Permissions y establecer las relaciones
Modelo Role
<?php namespace App; use Zizaco\Entrust\EntrustRole; class Role extends EntrustRole { protected $fillable = [ 'name', 'display_name', 'description' ]; //establecemos las relacion de muchos a muchos con el modelo User, ya que un rol //lo pueden tener varios usuarios y un usuario puede tener varios roles public function users(){ return $this->belongsToMany('App\User'); } }
Modelo Permissions
<?php namespace App; use Zizaco\Entrust\EntrustPermission; class Permission extends EntrustPermission { protected $fillable = [ 'name', 'display_name', 'description' ]; //establecemos las relacion de muchos a muchos con el modelo Role, ya que un permiso //lo pueden tener varios roles y un rol puede tener varios permisos public function roles(){ return $this->belongsToMany('App\Role'); } }
- Agregar el trait de Entrust al modelo User y añadir las relaciones
Modelo User
<?php namespace App; use App\Http\Requests\Request; use Illuminate\Foundation\Auth\User as Authenticatable; use Zizaco\Entrust\Traits\EntrustUserTrait; class User extends Authenticatable { use EntrustUserTrait; //hacemos uso del trait en la clase User para hacer uso de sus métodos protected $fillable = [ 'username', 'email', 'password' ]; protected $hidden = [ 'password', 'remember_token', ]; //establecemos las relaciones con el modelo Role, ya que un usuario puede tener varios roles //y un rol lo pueden tener varios usuarios public function roles(){ return $this->belongsToMany('App\Role'); } }
La segunad parte del post Aqui
Hola amigo estoy haciendo tu guia pero no se como usarlo ya despues que termine de hacer lo que tu colocaste en tu guia por favor me podria indicar como puedo usarlo en las plantillas y su editacion controladores se hace igual que los demas
Me gustaMe gusta
Buen post, pero haria falta la implementacion, como asignar permisos y como usarlos para limitar secciones o rutas, seria bueno un post mas detallado.
Saludos
Me gustaMe gusta
hola estimado David, por motivos de trabajo no pude culminar pero prometo hacer la segunda parte de ese tutorial 😀
Me gustaMe gusta
Amigo cuando podrias colocar la segunda parte ya que hice los controladores y eso pero me falta la parte de como asignar los permisos a los roles
Me gustaMe gusta
Aqui esta estimado jose, espero te sirva en algo
Me gustaMe gusta
Pingback: INSTALACION Y USO DE COMPONENTE ENTRUST EN LARAVEL 5.2 parte 2 | Laravel-Blog
muchas gracias por colocar la segunda parte la esperaba con ansias 🙂 🙂 🙂
Me gustaMe gusta
Suerte Eliana 😀
Me gustaMe gusta
Buenas tardes amigo, muy buen tuto. Lo estaba haciendo pero me salta un error en el terminal diciendo:
C:\xampp1\htdocs\siac_app1>php artisan entrust:migration Yes
Creating migration…
PHP Fatal error: Class name must be a valid object or a string in C:\xampp1\htdocs\siac_app1\vendor\zizaco\entrust\src\commands\MigrationCommand.php on line 86
[Symfony\Component\Debug\Exception\FatalErrorException]
Class name must be a valid object or a string
al ejecutar el php artisan entrust:migration
Me gustaMe gusta
Hola amigo, revisa en config.php y entrust.php el error esta ahy, suerte.
Me gustaLe gusta a 1 persona