76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			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();
 | 
						|
    }
 | 
						|
}
 |