label Bahasa Melayu. */ public const PERMISSIONS = [ 'pengguna.urus' => 'Urus pengguna sistem', 'perunding.urus' => 'Urus perunding', 'pusat_data.urus' => 'Urus pusat data', 'tugasan.urus' => 'Urus penugasan perunding', 'kitaran.urus' => 'Urus kitaran pelaporan/pembaharuan', 'templat.urus' => 'Urus templat senarai semak', 'serahan.lihat_semua' => 'Lihat semua serahan', 'serahan.semak' => 'Semak serahan (status, ulasan, pembetulan, penugasan pegawai)', 'serahan.kunci' => 'Kunci/buka kunci serahan', 'serahan.hardcopy' => 'Tanda penerimaan dokumen salinan keras', 'serahan.urus_sendiri' => 'Urus serahan sendiri (perunding)', 'laporan.lihat' => 'Lihat laporan & statistik', 'peringatan.lihat' => 'Lihat senarai peringatan/belum serah', 'komen.cipta' => 'Hantar komen/perbualan', 'komen.padam' => 'Padam (soft delete) komen — pentadbir sahaja', 'tetapan.urus' => 'Urus tetapan aplikasi', ]; public const ROLES = [ 'Super Admin' => '*', 'JPP Admin' => [ 'pengguna.urus', 'perunding.urus', 'pusat_data.urus', 'tugasan.urus', 'kitaran.urus', 'templat.urus', 'serahan.lihat_semua', 'serahan.semak', 'serahan.kunci', 'serahan.hardcopy', 'laporan.lihat', 'peringatan.lihat', 'komen.cipta', 'komen.padam', 'tetapan.urus', ], 'Pegawai JPP' => [ 'perunding.urus', 'pusat_data.urus', 'tugasan.urus', 'kitaran.urus', 'serahan.lihat_semua', 'serahan.semak', 'serahan.kunci', 'serahan.hardcopy', 'laporan.lihat', 'peringatan.lihat', 'komen.cipta', ], 'Penolong Pegawai' => [ 'pusat_data.urus', 'serahan.lihat_semua', 'serahan.semak', 'serahan.hardcopy', 'laporan.lihat', 'peringatan.lihat', 'komen.cipta', ], 'Kerani' => [ 'serahan.lihat_semua', 'serahan.hardcopy', 'peringatan.lihat', 'komen.cipta', ], 'Perunding' => [ 'serahan.urus_sendiri', 'komen.cipta', ], ]; public function run(): void { app(PermissionRegistrar::class)->forgetCachedPermissions(); $guard = 'web'; foreach (self::PERMISSIONS as $name => $label) { Permission::firstOrCreate(['name' => $name, 'guard_name' => $guard]); } foreach (self::ROLES as $roleName => $perms) { $role = Role::firstOrCreate(['name' => $roleName, 'guard_name' => $guard]); if ($perms === '*') { $role->syncPermissions(Permission::where('guard_name', $guard)->get()); } else { $role->syncPermissions($perms); } } app(PermissionRegistrar::class)->forgetCachedPermissions(); } }