siakad-itm/database/seeders/RolePermissionSeeder.php
Yoga Pangestu 93c5514c22 Refactor Letter Request Management
- Created LetterRequestRequest and LetterRequestStatusRequest for handling form requests.
- Removed the old LetterRequestRequest class and updated the authorization logic.
- Changed the student relationship to user in the LetterRequest model.
- Updated LetterRequestService to reflect changes in the model and request handling.
- Modified permission catalog to include new permissions for letter request status updates.
- Updated database migrations and seeders to use user_id instead of student_id.
- Removed student-specific letter request pages and components, consolidating functionality under admin routes.
- Adjusted frontend components to accommodate new data structure and permissions.
- Enhanced the letter request columns to support status updates directly from the table.
2026-09-01 00:03:13 +07:00

88 lines
2.7 KiB
PHP

<?php
namespace Database\Seeders;
use App\Support\PermissionCatalog;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use Spatie\Permission\PermissionRegistrar;
class RolePermissionSeeder extends Seeder
{
public function run(): void
{
app()[PermissionRegistrar::class]->forgetCachedPermissions();
$master = PermissionCatalog::MASTER;
$academicClasses = PermissionCatalog::ACADEMIC_CLASSES;
$manage = PermissionCatalog::MANAGE;
$finances = PermissionCatalog::FINANCES;
$services = PermissionCatalog::SERVICES;
$users = PermissionCatalog::USERS;
$feedbackSelfService = [
'view-feedback',
'create-feedback',
'update-feedback',
'delete-feedback',
];
$permissionNames = PermissionCatalog::all();
foreach ($permissionNames as $name) {
Permission::firstOrCreate(['name' => $name, 'guard_name' => 'web']);
}
app()[PermissionRegistrar::class]->forgetCachedPermissions();
$roles = [
'mahasiswa' => [
'view-dashboard',
'view-academic-terms',
'view-courses',
'view-letter-requests',
'create-letter-requests',
'update-letter-requests',
'delete-letter-requests',
...$feedbackSelfService,
],
'dosen' => [
'view-dashboard',
'view-courses',
...$feedbackSelfService,
],
'staff-admin' => [
'view-dashboard',
...$master,
...$academicClasses,
...$manage,
...array_diff($services, ['create-letter-requests', 'update-letter-requests']),
...$users,
...$feedbackSelfService,
'update-feedback-status',
],
'staff-keuangan' => [
'view-dashboard',
...$finances,
...$feedbackSelfService,
],
'kaprodi' => [
'view-dashboard',
'view-academic-terms',
'view-courses',
'view-course-classes',
'view-course-registrations',
'view-students',
...$feedbackSelfService,
],
'developer' => $permissionNames,
];
foreach ($roles as $roleName => $rolePermissions) {
$role = Role::firstOrCreate(['name' => $roleName, 'guard_name' => 'web']);
$role->syncPermissions($rolePermissions);
}
}
}