Files
bij/docs/migration/audit-json-controller.md
2026-04-21 05:59:39 +07:00

3.0 KiB

Audit detail: Json.php (CI3)

Path sumber: bij.mwp.co.id/application/controllers/Json.php
Base class: MY_ControllerMX_Controller (HMVC; Json tidak memakai Ion Auth untuk request API).

Ringkasan eksekutif

  • 22 method publik (termasuk index).
  • Hampir semua endpoint: POST token (+ field lain), balasan JSON, header Access-Control-Allow-Origin: *.
  • Tidak ada layer Model; semua interaksi DB di controller.

Tabel per method

Method Login/token Pegawai Mobile DB langsung Catatan refactor
index Tidak Hanya pesan tolak
login_w_token Ya Ya Ya Ya Update last_login; unset field sensitif
login Ya Ya Ya Ya MD5 password; token random di DB
profil token Ya Ya Ya Banyak join logika jadwal/libur/cuti; kompleks
save_cuti token Ya Ya Ya Base64 file + insert cuti + cuti_dokumen
batalkan_cuti token Ya Ya Ya Update status
save_aktifitas token Ya Ya Ya Upload + aktifitas_harian
save_masuk token Ya Ya Ya Jadwal dinamis kolom {N}_in; update presensi
save_pulang token Ya Ya Ya Verifikasi waktu pulang; cek field toleransi
save_istirahat token Ya Ya Ya Update partial presensi; variabel $ist bisa tak terdefinisi jika kedua POST kosong
presensi_today token Ya Ya Ya Insert default presensi jika belum ada; serialize($jadwal)
presensi token Ya Ya Ya Riwayat 20 hari
daftar_today token Ya Ya Ya Join pegawai/jabatan/presensi; tanggal di string SQL
berita token Ya Ya Pagination dari/jumlah
cuti token Ya Ya Ya N+1 query dokumen per baris cuti
lembur token Ya Ya Ya
libur token Ya Ya Semua libur (tidak difilter pegawai)
aktifitas token Ya Ya Ya
save_pp token Ya Ya Ya Hapus foto lama unlink; update pegawai.photo
save_password token Ya Ya Ya Bandingkan MD5 password lama

Query / DB — pola yang dipakai

  • pegawai: hampir selalu filter token atau kredensial login.
  • Lookup terkait: kantor, jabatan, unit_kerja, lembur, dilapangan, libur, cuti, jadwal, presensi, berita, cuti_dokumen, aktifitas_harian.

Private helpers

  • generateRandomString — untuk suffix token setelah login.
  • utf8ize — rekursif array/string; memakai utf8_encode pada string (perlu pengganti di PHP 8+).

Prioritas implementasi di CI4 (usulan)

  1. login, login_w_token, profil
  2. presensi_today, save_masuk, save_pulang, save_istirahat
  3. save_cuti, cuti, batalkan_cuti
  4. Sisanya menurut frekuensi pemakaian aplikasi mobile.

Implementasi CI4: app/Controllers/Api/MobileJsonController.php + app/Services/Mobile/MobileJsonService.php (lihat juga json_api_map.md).