You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.2 KiB
43 lines
1.2 KiB
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Domains\Identity\Enums\RoleType;
|
|
use App\Domains\Identity\Models\Permission;
|
|
use App\Domains\Identity\Models\Role;
|
|
use Illuminate\Database\Seeder;
|
|
use Spatie\Permission\PermissionRegistrar;
|
|
|
|
class RoleSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
$roles = RoleType::cases();
|
|
$roleCollection = [];
|
|
foreach ($roles as $role) {
|
|
$roleCollection[] = Role::create([
|
|
'name' => $role->value,
|
|
'guard_name' => 'web',
|
|
]);
|
|
}
|
|
|
|
$roleCollection = collect($roleCollection);
|
|
|
|
$permissions = RoleType::permissions();
|
|
|
|
foreach ($permissions as $permission) {
|
|
$roles = $roleCollection->filter(fn ($value) => in_array($value->name, array_column($permission['roles'], 'value')));
|
|
Permission::create([
|
|
'name' => $permission['name'],
|
|
'description' => $permission['description'],
|
|
'group' => $permission['group'],
|
|
'guard_name' => $permission['guard_name'],
|
|
])->roles()->sync($roles);
|
|
}
|
|
|
|
app(PermissionRegistrar::class)->forgetCachedPermissions();
|
|
}
|
|
}
|
|
|