# Global Agent Guidelines & Learnings

## CI3 Session & Cookie Management Rules

1. **Penghapusan Cookie Session (`authLogout`):**
   - Saat menghapus cookie cadangan (seperti `uprop`, `uid`, `pwd`), **Wajib** menggunakan waktu lampau `time() - 3600`, tentukan path `'/'`, dan hilangkan dari superglobal `$_COOKIE`:
     ```php
     setcookie("uprop", "", time() - 3600, "/");
     unset($_COOKIE['uprop']);
     ```
   - *Jangan pernah* menggunakan `setcookie("uprop", NULL, time())` tanpa path, karena cookie akan tetap ada di browser dan menyebabkan *zombie session*.

2. **Validasi di Depan (*Upfront Validation*) pada Cookie Restoration (`auth/Login/index`):**
   - Sebelum membangkitkan session dari cookie `uprop` dan melakukan `redirect(base_url())`, **Wajib** memvalidasi keberadaan `id` user dan status keaktifan user di database.
   - Jika cookie rusak atau user sudah dinonaktifkan/logout, langsung musnahkan cookie di depan dan tampilkan form login biasa (jangan di-redirect ke `base_url()` / pilih cabang).

3. **Strict Guard pada Constructor Controller:**
   - Semua controller utama (termasuk controller pilih cabang seperti `Welcome.php`) wajib mengecek `$this->session->login['id']` pada `__construct()`. Jika ID kosong, langsung alihkan pengguna ke `gotoLogin()`.
