radfusion/database/seeders/RoleSeeder.php
2025-01-07 17:42:26 +06:00

62 lines
1.9 KiB
PHP

<?php
namespace Database\Seeders;
use App\Domain\ACL\Permission;
use App\Domain\ACL\Role;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission as SpatiePermission;
use Spatie\Permission\Models\Role as SpatieRole;
class RoleSeeder extends Seeder
{
public function run(): void
{
foreach (Role::cases() as $role) {
SpatieRole::create(['name' => $role->value]);
}
$adm = SpatieRole::findByName(Role::Admin->value);
$rad = SpatieRole::findByName(Role::Radiologist->value);
$tech = SpatieRole::findByName(Role::Technician->value);
$guest = SpatieRole::findByName(Role::Guest->value);
foreach (Permission::cases() as $perm) {
SpatiePermission::create(['name' => $perm->value]);
}
$rad->givePermissionTo([
Permission::ReportEdit,
Permission::ReportDownload,
Permission::StudyDownload,
Permission::StudyMetadataView,
Permission::StudyHistoryView,
Permission::StudyNotesCreate,
Permission::StudyNotesView,
Permission::AttachmentDownload,
]);
$tech->givePermissionTo([
Permission::StudyDownload,
Permission::StudyMetadataView,
Permission::StudyMetadataEdit,
Permission::StudyHistoryView,
Permission::StudyHistoryEdit,
Permission::StudyNotesCreate,
Permission::StudyNotesView,
Permission::AttachmentUpload,
Permission::AttachmentDownload,
Permission::StudyArchive,
Permission::ReportDownload,
]);
$adm->givePermissionTo(SpatiePermission::all());
$guest->givePermissionTo([
Permission::StudyMetadataView,
Permission::StudyNotesView,
Permission::StudyDownload,
Permission::ReportDownload,
]);
}
}