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