first commit

This commit is contained in:
Saufi
2026-06-24 20:32:14 +08:00
commit 10fb30ad69
201 changed files with 21356 additions and 0 deletions

View 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();
}
}