perling/database/seeders/RolesAndPermissionsSeeder.php

76 lines
2.3 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
class RolesAndPermissionsSeeder extends Seeder
{
public function run(): void
{
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
$permissions = [
// Dashboard tabs
'dashboard.view.pertek',
'dashboard.view.rintek',
'dashboard.view.amdal',
'dashboard.view.izin_angkut',
'dashboard.view.uji_emisi',
// Menus
'penjadwalan.access',
'persetujuan_teknis.access',
'rincian_teknis.access',
'persetujuan_lingkungan.access',
'izin_angkut_olah.access',
'izin_tempat_uji_emisi.access',
// Management
'settings.manage',
'content.manage',
'master_data.manage',
];
foreach ($permissions as $perm) {
Permission::firstOrCreate(['name' => $perm]);
}
// Roles
$kadis = Role::firstOrCreate(['name' => 'Kadis']);
$ppkl = Role::firstOrCreate(['name' => 'PPKL']);
$dlh = Role::firstOrCreate(['name' => 'DLH']);
// Kadis permissions (semua dashboard tabs + modules, tanpa pengaturan/konten/master data)
$kadisPerms = [
'dashboard.view.pertek',
'dashboard.view.rintek',
'dashboard.view.amdal',
'dashboard.view.izin_angkut',
'dashboard.view.uji_emisi',
'penjadwalan.access',
'persetujuan_teknis.access',
'rincian_teknis.access',
'persetujuan_lingkungan.access',
'izin_angkut_olah.access',
'izin_tempat_uji_emisi.access',
];
$kadis->syncPermissions($kadisPerms);
// PPKL permissions (dashboard pertek + penjadwalan + persetujuan teknis)
$ppklPerms = [
'dashboard.view.pertek',
'penjadwalan.access',
'persetujuan_teknis.access',
];
$ppkl->syncPermissions($ppklPerms);
// DLH (super admin) -> assign all permissions
$dlh->syncPermissions(Permission::all());
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
}
}