Skip to content

Susun ulang akses untuk group pengguna - #1679

Merged
analisopendesa merged 5 commits into
rilis-devfrom
susun-ulang-grup
Jul 26, 2026
Merged

Susun ulang akses untuk group pengguna#1679
analisopendesa merged 5 commits into
rilis-devfrom
susun-ulang-grup

Conversation

@habibie11

@habibie11 habibie11 commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

issue # #1651

🎯 Deskripsi

Pull request ini menyelesaikan issue terkait penyesuaian hak akses (group pengguna) dan permission yang sudah tidak relevan. Beberapa grup lama dihapus, grup baru ditambahkan dengan permission yang spesifik dan sesuai kebutuhan, serta fitur permission usang telah dibersihkan sepenuhnya dari database, kode, dan seeder.

Selain itu, PR ini menyelesaikan bug duplikasi list role pada form aplikasi dan melindungi role-role sistem bawaan agar tidak dapat dihapus secara tidak sengaja oleh user.


🛠️ Perubahan yang Dilakukan

1. Migrasi dan Seeder Role

  • Menambahkan file migrasi 2026_07_16_000001_remove_obsolete_roles.php untuk menghapus grup usang (admin-desa, admin-pendidikan, admin-puskesmas, kontributor-artikel).
  • Menambahkan file migrasi 2026_07_16_000002_add_new_web_roles.php untuk menambahkan grup baru (admin-komplain, administrator-website).
  • Memperbarui RoleSpatieSeeder untuk menyematkan permission yang sesuai dengan list role terbaru.

2. Pembersihan Permission Usang

  • Menambahkan file migrasi 2026_07_17_000001_remove_obsolete_standalone_permissions.php untuk menghapus permission standalone yang tak terpakai: view, create, edit, delete, access.api, access.counter, dan access.change_default.
  • Menghapus referensi permission yang sudah dihapus tersebut dari routes (web.php), views (sidebar.blade.php), file translasi (permissions.php), tests (CounterExportTest.php, RoutePermissionMiddlewareTest.php), dan logic Auth controller API.

3. Proteksi Penghapusan Role Sistem

  • Menambahkan daftar PROTECTED_ROLES di model Role yang mencakup role-role dasar (super-admin, admin-kecamatan, admin-komplain, administrator-website).
  • Menambahkan pengecekan pada RoleController::destroy agar tidak bisa menghapus role yang masuk ke dalam PROTECTED_ROLES.

4. Perbaikan UI Duplikasi Role

  • Menerapkan local scope scopeWeb() pada model Role untuk memfilter role berdasarkan guard_name = 'web'.
  • Menggunakan scope tersebut pada RoleController::getData dan UserController (create & edit forms) sehingga UI tidak lagi menampilkan duplikat role yang berasal dari guard_name = 'api'.

5. Proteksi Manipulasi Data Mode Database Gabungan

  • Melakukan penyesuaian pada tampilan pembuatan dan pengeditan grup pengguna (resources/views/role/form.blade.php).
  • Jika mode Database Gabungan aktif ($settings['sinkronisasi_database_gabungan'] == 1), opsi/checkbox untuk memberikan hak aksi create, edit, delete, dan import pada modul-modul yang bersumber dari API pusat (seperti Data Desa, Anggaran Desa, Laporan Penduduk, Laporan APBDes, dll.) akan dihilangkan dan diganti dengan ikon gembok 🔒 (Data dari Pusat).
  • Pendekatan ini memastikan secara otomatis bahwa tombol aksi (seperti tombol Hapus) tidak akan tampil di antarmuka manajemen data modul terkait karena grup pengguna tersebut tidak bisa diberikan izin otorisasinya sejak awal pembuatan/pengaturan role.

✅ Test Cases yang Diimplementasikan

  • Grup pengguna lama sudah dihapus dan grup pengguna baru terbentuk dengan hak akses spesifik.
  • Opsi hapus (delete) ditolak/tidak dapat digunakan untuk role bawaan sistem (PROTECTED_ROLES).
  • Daftar role di UI table dan dropdown user form muncul dengan bersih, tanpa adanya duplikasi.
  • Route /counter, API login, dsb., berjalan normal dan tes fitur (PHPUnit/Pest) tetap berstatus passed meskipun tanpa permission lama.
image image (modul-moodul yang terkait dengan API DATABSE GABUNGAN tidak memiliki akses hapus dsb) ---

📸 Cara Menjalankan Uji Coba Manual

  1. Jalankan migrasi dan seeder php artisan migrate dan php artisan db:seed --class=RoleSpatieSeeder.
  2. Login ke dashboard aplikasi.
  3. Buka menu Pengaturan > Role.
    • Cek daftar tabel, pastikan hanya ada role-role valid (super-admin, admin-kecamatan, administrator-website, admin-komplain) tanpa duplikasi nama dari guard yang berbeda.
    • Coba klik tombol delete/hapus pada role sistem, pastikan operasi diblokir dengan pesan akses tidak diizinkan.
  4. Buka menu Pengaturan > User > Tambah.
    • Periksa opsi role dropdown, pastikan tidak ada role duplikat yang ditampilkan.
  5. Jalankan unit test melalui php artisan test untuk memastikan pembersihan permission terkait route middleware tidak merusak fungsionalitas fitur.

@github-actions

Copy link
Copy Markdown
Contributor

AI PR Review gagal diluncurkan (SSH ke server tidak berhasil). Cek workflow logs untuk detail.

@habibie11 habibie11 changed the title Susun ulang grup dan permission Susun ulang akses untuk group pengguna Jul 20, 2026
@analisopendesa
analisopendesa merged commit 5523c7b into rilis-dev Jul 26, 2026
@analisopendesa
analisopendesa deleted the susun-ulang-grup branch July 26, 2026 22:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants