- Added permission checks for creating, updating, and deleting academic terms, courses, and departments. - Updated the routes to enforce permissions for various actions in the admin panel. - Enhanced user management by adding permissions for administrators, lecturers, and students. - Refactored components to conditionally render actions based on user permissions. - Updated the auth type to include optional permissions array for user roles.
101 lines
4.2 KiB
PHP
101 lines
4.2 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
|
|
{
|
|
public function run(): void
|
|
{
|
|
app()[PermissionRegistrar::class]->forgetCachedPermissions();
|
|
|
|
$master = [
|
|
'view-academic-terms', 'create-academic-terms', 'update-academic-terms', 'delete-academic-terms', 'update-academic-terms-status',
|
|
'view-departments', 'create-departments', 'update-departments', 'delete-departments',
|
|
'view-courses', 'create-courses', 'update-courses', 'delete-courses',
|
|
];
|
|
|
|
$academicClasses = [
|
|
'view-materials', 'create-materials', 'update-materials', 'delete-materials',
|
|
'view-assignments', 'create-assignments', 'update-assignments', 'delete-assignments',
|
|
'view-assignment-submissions', 'create-assignment-submissions', 'update-assignment-submissions', 'delete-assignment-submissions',
|
|
'view-schedules', 'create-schedules', 'update-schedules', 'delete-schedules',
|
|
'view-attendances', 'create-attendances', 'delete-attendances',
|
|
];
|
|
|
|
$manage = [
|
|
'view-course-classes', 'create-course-classes', 'update-course-classes', 'delete-course-classes',
|
|
'view-course-class-enrollments', 'create-course-class-enrollments', 'delete-course-class-enrollments',
|
|
'view-course-registrations', 'create-course-registrations', 'approve-course-registrations', 'reject-course-registrations',
|
|
'view-announcements', 'create-announcements', 'update-announcements', 'delete-announcements',
|
|
];
|
|
|
|
$finances = [
|
|
'view-tuition-invoices', 'create-tuition-invoices', 'update-tuition-invoices', 'delete-tuition-invoices',
|
|
'view-tuition-payments', 'create-tuition-payments', 'update-tuition-payments', 'delete-tuition-payments',
|
|
];
|
|
|
|
$services = [
|
|
'view-letter-requests', 'create-letter-requests', 'update-letter-requests', 'delete-letter-requests',
|
|
'view-academic-advising-logs', 'create-academic-advising-logs', 'update-academic-advising-logs', 'delete-academic-advising-logs',
|
|
];
|
|
|
|
$users = [
|
|
'view-lecturers', 'create-lecturers', 'update-lecturers', 'delete-lecturers', 'reset-lecturers-password', 'update-lecturers-status', 'export-lecturers',
|
|
'view-students', 'create-students', 'update-students', 'delete-students', 'reset-students-password', 'update-students-academic-status', 'update-students-account-status', 'export-students',
|
|
'view-administrators', 'create-administrators', 'update-administrators', 'delete-administrators', 'reset-administrators-password', 'update-administrators-status',
|
|
];
|
|
|
|
$permissionNames = [
|
|
'view-dashboard',
|
|
...$master,
|
|
...$academicClasses,
|
|
...$manage,
|
|
...$finances,
|
|
...$services,
|
|
...$users,
|
|
];
|
|
|
|
foreach ($permissionNames as $name) {
|
|
Permission::firstOrCreate(['name' => $name, 'guard_name' => 'web']);
|
|
}
|
|
|
|
app()[PermissionRegistrar::class]->forgetCachedPermissions();
|
|
|
|
$roles = [
|
|
'mahasiswa' => ['view-dashboard'],
|
|
'dosen' => ['view-dashboard'],
|
|
'staff-admin' => [
|
|
'view-dashboard',
|
|
...$master,
|
|
...$academicClasses,
|
|
...$manage,
|
|
...$services,
|
|
...$users,
|
|
],
|
|
'staff-keuangan' => [
|
|
'view-dashboard',
|
|
...$finances,
|
|
],
|
|
'kaprodi' => [
|
|
'view-dashboard',
|
|
'view-academic-terms',
|
|
'view-courses',
|
|
'view-course-classes',
|
|
'view-course-registrations',
|
|
'view-students',
|
|
],
|
|
'developer' => $permissionNames,
|
|
];
|
|
|
|
foreach ($roles as $roleName => $rolePermissions) {
|
|
$role = Role::firstOrCreate(['name' => $roleName, 'guard_name' => 'web']);
|
|
$role->syncPermissions($rolePermissions);
|
|
}
|
|
}
|
|
}
|