From 3eccbcb7d7c0619f36ea89d927ab655aebc8f3d4 Mon Sep 17 00:00:00 2001 From: Geriano Date: Sat, 16 Jul 2022 03:01:48 +0700 Subject: [PATCH] create created model event and adding role and permission seeder --- app/Models/Permission.php | 14 +++++++++++++- database/seeders/InitialSeeder.php | 18 ++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/app/Models/Permission.php b/app/Models/Permission.php index 2324a0f..e764024 100644 --- a/app/Models/Permission.php +++ b/app/Models/Permission.php @@ -6,5 +6,17 @@ use Spatie\Permission\Models\Permission as Model; class Permission extends Model { - // + /** + * @inheritdoc + */ + public static function boot() + { + parent::boot(); + + static::created(function (Permission $permission) { + if ($role = Role::where('name', 'superuser')->first()) { + $role->permissions()->attach([$permission->id]); + } + }); + } } \ No newline at end of file diff --git a/database/seeders/InitialSeeder.php b/database/seeders/InitialSeeder.php index 52b8dd3..bde3be1 100644 --- a/database/seeders/InitialSeeder.php +++ b/database/seeders/InitialSeeder.php @@ -2,6 +2,8 @@ namespace Database\Seeders; +use App\Models\Permission; +use App\Models\Role; use App\Models\User; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; @@ -35,5 +37,21 @@ class InitialSeeder extends Seeder $user->email_verified_at = now(); $user->save(); + + Role::create([ + 'name' => 'superuser', + 'guard_name' => 'web', + ]); + + $su->assignRole('superuser'); + + collect(['user', 'permission', 'role', 'menu'])->each(function ($name) { + collect(['create', 'read', 'update', 'delete'])->each(function ($ability) use ($name) { + Permission::create([ + 'name' => sprintf('%s %s', $ability, $name), + 'guard_name' => 'web', + ]); + }); + }); } }