Files
prn2026/database/seeders/RolePermissionSeeder.php
2026-06-03 08:51:22 +08:00

120 lines
3.9 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use Spatie\Permission\PermissionRegistrar;
class RolePermissionSeeder extends Seeder
{
/**
* Seed the application's roles and permissions.
*/
public function run(): void
{
app(PermissionRegistrar::class)->forgetCachedPermissions();
$permissions = [
'admin.dashboard.view',
'users.manage',
'roles.manage',
'election.manage',
'hierarchy.manage',
'positions.manage',
'quotas.manage',
'qr.manage',
'applications.view_all',
'applications.create_manual',
'applications.update',
'applications.approve',
'applications.reject',
'assignments.manage_all',
'representatives.manage',
'wheelchairs.manage',
'attendance.view_all',
'attendance.record_all',
'finance.dashboard.view',
'finance.view',
'finance.verify',
'finance.export',
'applications.view_finance_fields',
'exports.generate_all',
'audit.view',
'system_notes.create',
'ppm.dashboard.view',
'applications.view_own_pusat',
'applications.review_own_pusat',
'applications.approve_own_pusat',
'applications.reject_own_pusat',
'applications.change_role_own_pusat',
'assignments.manage_own_pusat',
'representatives.view_own_pusat',
'attendance.record_own_pusat',
'attendance.view_own_pusat',
'exports.generate_own_pusat',
'ktm.dashboard.view',
'ktm.team.view',
'ktm.kp.create',
'ktm.kp.approve',
'ktm.kp.delete_created',
'applications.view_own_team',
'public_application.create',
'public_application.view_own_status',
];
$permissionModels = [];
foreach ($permissions as $permission) {
$permissionModels[$permission] = Permission::findOrCreate($permission, 'web');
}
$rolePermissions = [
'Admin' => $permissions,
'Admin Kewangan' => [
'finance.dashboard.view',
'finance.view',
'finance.verify',
'finance.export',
'applications.view_finance_fields',
],
'PPM' => [
'ppm.dashboard.view',
'applications.view_own_pusat',
'applications.review_own_pusat',
'applications.approve_own_pusat',
'applications.reject_own_pusat',
'applications.change_role_own_pusat',
'assignments.manage_own_pusat',
'representatives.view_own_pusat',
'attendance.record_own_pusat',
'attendance.view_own_pusat',
'exports.generate_own_pusat',
],
'KTM' => [
'ktm.dashboard.view',
'ktm.team.view',
'ktm.kp.create',
'ktm.kp.approve',
'ktm.kp.delete_created',
'applications.view_own_team',
],
'Pemohon' => [
'public_application.create',
'public_application.view_own_status',
],
];
foreach ($rolePermissions as $roleName => $permissionNames) {
$role = Role::findOrCreate($roleName, 'web');
$role->syncPermissions(array_map(
fn (string $permission) => $permissionModels[$permission],
$permissionNames,
));
}
app(PermissionRegistrar::class)->forgetCachedPermissions();
}
}