# Autentikasi & otorisasi ## Web (admin / site) - **Ion Auth** (`application/third_party/ion_auth`), di-autoload (`application/config/autoload.php`). - Login form: `Site::login` + `Site::login_auth` memanggil `$this->ion_auth->login()`. - Pembatasan halaman: `MY_Controller` membaca `page_auth` dari config modul (`ci_bootstrap.php`) dan `ion_auth->in_group()`. ### CI4 (rencana) - Opsi: **CodeIgniter Shield**, **Myth\Auth**, atau port minimal Ion Auth (berat). - Admin layout saat ini **belum** memakai filter login — sengaja untuk foundation UI. ## API mobile (`Json.php` / CI4 `MobileJsonService`) - **Login:** `username` + `password` → hash **MD5** di kolom `pegawai.password` (kompatibilitas dipertahankan). - **Token:** string disimpan di kolom `pegawai.token`; diperbarui saat login; divalidasi per-request via POST `token`. - **Bukan** JWT dari modul `api` (`Jwt_client.php`) — dua jalur autentikasi terpisah. ### Peningkatan masa depan (tanpa memutus mobile sekarang) - Password: `password_hash` + kolom migrasi bertahap atau dual-verify. - Token: JWT stateless + refresh, atau token hash di DB. - Rate limiting pada `login`. ## File terkait CI4 - `app/Services/Mobile/MobileJsonService.php` — `login`, `loginWToken`, `savePassword` - `app/Libraries/LegacyUtf8Encoder.php` — encoding respons (bukan auth)