Skip to content

Perubahan Metode DataTables dari GET ke POST pada Menu Pengaturan#1537

Open
habibie11 wants to merge 2 commits into
devfrom
dev-waf-pengaturan
Open

Perubahan Metode DataTables dari GET ke POST pada Menu Pengaturan#1537
habibie11 wants to merge 2 commits into
devfrom
dev-waf-pengaturan

Conversation

@habibie11
Copy link
Copy Markdown
Contributor

issue #1527

Latar Belakang

WAF (Web Application Firewall) memblokir halaman DataTables pada menu Pengaturan karena menggunakan metode GET yang mengirimkan seluruh parameter pencarian, sorting, dan filtering sebagai query string di URL. URL yang sangat panjang ini ditolak oleh WAF.

Solusi

Mengubah metode pengiriman DataTables dari GET (default) menjadi POST, sehingga parameter dikirim melalui request body, bukan URL. Pola yang digunakan Route::match(['GET', 'POST']) agar tetap backward-compatible.

Lingkup Perubahan

Routes (routes/web.php):

Sebelum Sesudah
Route::get('getdata', ...)->name('setting.user.getdata') Route::match(['GET', 'POST'], 'getdata', ...)->name('setting.user.getdata')
Route::get('getdata', ...)->name('setting.role.getdata') Route::match(['GET', 'POST'], 'getdata', ...)->name('setting.role.getdata')
Route::get('getdata', ...)->name('setting.tipe-regulasi.getdata') Route::match(['GET', 'POST'], 'getdata', ...)->name('setting.tipe-regulasi.getdata')
Route::get('/getdata', ...)->name('setting.pengaturan-database.getdata') Route::match(['GET', 'POST'], '/getdata', ...)->name('setting.pengaturan-database.getdata')

Blade Views (mengubah konfigurasi DataTables ajax):

File Sebelum Sesudah
resources/views/setting/tipe_regulasi/index.blade.php:48 ajax: "{!! route(...) !!}" ajax: { url, type: "POST" }
resources/views/role/index.blade.php:50 ajax: "{!! route(...) !!}" ajax: { url, type: "POST" }
resources/views/user/index.blade.php:48 ajax: "{!! route(...) !!}" ajax: { url, type: "POST" }
resources/views/setting/pengaturan_database/table-backup.blade.php:37 ajax: "{!! route(...) !!}" ajax: { url, type: "POST" }

Tidak Ada Perubahan

  • Controllers — Method getData(), getDataUser(), getDataBackup() sudah kompatibel dengan method GET dan POST.
  • CSRF — DataTables POST requests tidak memerlukan CSRF token (sama seperti menu Data lain yang sudah menggunakan POST).

Testing

File test baru: tests/Feature/Settings/SettingDataTablesPostTest.php

  • 11 test cases mencakup:
    • POST request mengembalikan struktur DataTables yang valid (draw, recordsTotal, recordsFiltered, data)
    • POST request mengembalikan kolom yang diharapkan (nama, aksi, dll.)
    • GET request masih berfungsi (backward-compatible)

Semua test lulus dengan 55 assertions.

Referensi

  • Implementasi mengikuti pola yang sudah ada di menu Data (Penduduk, Keluarga, Data Desa, dll.) yang menggunakan type: "POST" pada konfigurasi DataTables ajax.
  • Test file baru menggunakan pola yang sama dengan DataTablesPostMethodTest.php dan KependudukanDataTablesPostTest.php.

@habibie11 habibie11 requested a review from affandii06 May 13, 2026 02:46
@github-actions
Copy link
Copy Markdown

🔄 AI PR Review sedang antri di server...

Proses review akan segera dimulai di background — hasil akan muncul sebagai komentar setelah selesai.
Powered by CrewAI · PR #1537

@pandigresik
Copy link
Copy Markdown
Contributor

Sudah sesuai berdasarkan list pada issue

simplescreenrecorder-2026-05-13_12.59.12.mp4

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