64. Cómo crear roles y permisos
3 comentarios
Inicia sesión para comentar
Comentarios:
-
Luiis Chogas hace 10 meses
Como le asigno cuando uso teams, no me funciona y me quede estancado
User::create([ … ])->assignRole('Admin');
-
Emilio Rigoberto HernÁndez Lira hace 6 meses
pudiste resolverlo?
-
-
Walter hace 2 años
? Creación de Roles
php artisan make:seeder RoleSeeder
En database > seeders > RoleSeeder.php agregamos:
use Spatie\Permission\Models\Role; class RoleSeeder extends Seeder { public function run() { $role1 = Role::create(['name' => 'Admin']); $role2 = Role::create(['name' => 'Blogger']); } }
? Creación de Permisos
Dentro de la función run anterior:
Permission::create(['name' => 'admin.home']); Permission::create(['name' => 'admin.categories.index']); Permission::create(['name' => 'admin.categories.create']); Permission::create(['name' => 'admin.categories.edit']); Permission::create(['name' => 'admin.categories.destroy']); Permission::create(['name' => 'admin.tags.index']); Permission::create(['name' => 'admin.tags.create']); Permission::create(['name' => 'admin.tags.edit']); Permission::create(['name' => 'admin.tags.destroy']); Permission::create(['name' => 'admin.posts.index']); Permission::create(['name' => 'admin.posts.create']); Permission::create(['name' => 'admin.posts.edit']); Permission::create(['name' => 'admin.posts.destroy']);
Ahora en la función run() de la clase DatabaseSeeder del archivo database > seeders > DatabaseSeeder.php agregamos:
$this->call(RoleSeeder::class);
Ejecutamos los seeders:
php artisan migrate:fresh --seed
? Asignamos permisos a los roles
Introducimos registros en la tabla intermedia role_has_permissions usando el método syncRoles:
Permission::create(['name' => 'admin.home'])->syncRoles([$role1, $role2]);
? Asignamos roles a usuarios
En la función run() de la clase UserSeeder en el archivo database > seeders > UserSeeder.php usamos el método assignRole():
User::create([ … ])->assignRole('Admin');
Volvemos a ejecutar los seeders:
php artisan migrate:fresh --seed
-
Mauricio Giraldo hace 2 años
Hola, me sale este error cuando agrego el assignRole en el Seeder del User
Class "App\Models\Role" not found
751▕ * @return mixed
752▕ */
753▕ protected function newRelatedInstance($class)
754▕ {
➜ 755▕ return tap(new $class, function ($instance) {
756▕ if (! $instance->getConnectionName()) {
757▕ $instance->setConnection($this->connection);
758▕ }
759▕ });1 C:\wamp\www\Laravel9\Laravel\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasRelationships.php:490
Illuminate\Database\Eloquent\Model::newRelatedInstance()2 C:\wamp\www\Laravel 9\\app\Models\User.php:78
Illuminate\Database\Eloquent\Model::belongsToMany()
-
Victor Arana Flores hace 2 años
Hola, el error te dice que no existe el modelo App\Models\Role
Asegurate de seguir todos los pasos, ya que no debería estar llamando ese modelo, y debería estar llamado el modelo generado por Spatie.
-