presseportale/database/seeders/RolesAndPermissionsSeeder.php
Kevin Adametz 5b8bdf4182
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (push) Waiting to run
12-05-2026 Frontend dev
2026-05-12 18:32:33 +02:00

66 lines
1.8 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
class RolesAndPermissionsSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
$roles = [
'admin',
'editor',
'customer',
'api-only',
];
foreach ($roles as $role) {
Role::firstOrCreate(['name' => $role]);
}
$permissions = [
'press-releases:read',
'press-releases:write',
'press-releases:publish',
'press-release-images:write',
'companies:read',
'newsletter:subscribe',
'users:manage',
'roles:manage',
];
foreach ($permissions as $permission) {
Permission::firstOrCreate(['name' => $permission]);
}
Role::findByName('admin')->syncPermissions($permissions);
Role::findByName('editor')->syncPermissions([
'press-releases:read',
'press-releases:write',
'press-releases:publish',
'press-release-images:write',
'companies:read',
'newsletter:subscribe',
]);
Role::findByName('customer')->syncPermissions([
'press-releases:read',
'press-releases:write',
'press-release-images:write',
'companies:read',
'newsletter:subscribe',
]);
Role::findByName('api-only')->syncPermissions([
'press-releases:read',
'press-releases:write',
'press-release-images:write',
'companies:read',
'newsletter:subscribe',
]);
}
}