diff --git a/database/migrations/2026_08_03_091948_revoke_point_audit_non_admin.php b/database/migrations/2026_08_03_091948_revoke_point_audit_non_admin.php new file mode 100644 index 0000000..53f8400 --- /dev/null +++ b/database/migrations/2026_08_03_091948_revoke_point_audit_non_admin.php @@ -0,0 +1,36 @@ +where('key', 'view-point-audit')->value('id'); + if (! $permissionId) { + return; + } + + DB::table('role_permissions')->where('permission_id', $permissionId)->delete(); + } + + public function down(): void + { + $permissionId = DB::table('permissions')->where('key', 'view-point-audit')->value('id'); + if (! $permissionId) { + return; + } + + foreach (['bk', 'waka_kesiswaan', 'ketua_tim', 'kepala_sekolah', 'wali_kelas', 'staff'] as $role) { + DB::table('role_permissions')->updateOrInsert( + ['role' => $role, 'permission_id' => $permissionId], + ['created_at' => now(), 'updated_at' => now()] + ); + } + } +}; diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index a91c4ad..5034a8b 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -171,10 +171,6 @@ Laporan @endcanPermission - @canPermission('view-point-audit') - Riwayat Poin - @endcanPermission - @canPermission('categories-manage')

Master Data

@@ -194,6 +190,9 @@

Administrasi

@endcanPermission + @canPermission('view-point-audit') + Riwayat Poin + @endcanPermission @canPermission('sync-data') Sinkronisasi @endcanPermission diff --git a/tests/Feature/PointAuditTest.php b/tests/Feature/PointAuditTest.php index 01aa55d..edc45ba 100644 --- a/tests/Feature/PointAuditTest.php +++ b/tests/Feature/PointAuditTest.php @@ -120,7 +120,8 @@ class PointAuditTest extends TestCase 'violation_date' => '2026-08-01', ], $this->bk->id); - $this->actingAs($this->bk) + // Riwayat Poin khusus admin + $this->actingAs(User::factory()->create(['roles' => ['admin']])) ->get('/point-audit') ->assertOk() ->assertSee('Riwayat Perubahan Poin') @@ -128,4 +129,9 @@ class PointAuditTest extends TestCase ->assertSee('Pencatatan') ->assertSee('Terlambat 15 menit'); } + + public function test_bk_tidak_bisa_membuka_riwayat_poin(): void + { + $this->actingAs($this->bk)->get('/point-audit')->assertForbidden(); + } }