120 lines
3.9 KiB
PHP
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();
|
|
}
|
|
}
|