first commit
This commit is contained in:
80
database/seeders/RolesAndPermissionsSeeder.php
Normal file
80
database/seeders/RolesAndPermissionsSeeder.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Spatie\Permission\PermissionRegistrar;
|
||||
|
||||
class RolesAndPermissionsSeeder extends Seeder
|
||||
{
|
||||
/** Senarai kebenaran sistem => 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user