# Panduan Administrator

## Akun & peran
- **ADMIN** – akses penuh: pengaturan, akun, pembersihan/verifikasi log, kunci pendaftaran.
- **GURU** – hanya kelas yang diampu + izin: `power`, `lock`, `message`, `screen`, `internet`, `browser`, `downloads`, `apps` (atur di *Manajemen Administrator*).
- **SISWA** – tidak memiliki akun dashboard; hanya komputernya yang dikelola agent.
Password di-hash Argon2id; login memakai JWT berumur pendek + refresh token yang diputar (pemakaian ulang token lama mencabut seluruh sesi); percobaan login dibatasi (rate limit).

## Keamanan
- Gunakan **HTTPS** (`scripts\gen_cert.bat`) dan IP server tetap. Sertifikat disalin ke siswa lewat `-CaFile` (agent memverifikasi server).
- Setiap agent punya token perangkat sendiri (disimpan sebagai hash di server). Perintah ke agent **ditandatangani HMAC** dengan kunci per-perangkat, ada masa berlaku dan nonce anti-replay; agent menolak perintah tak valid.
- Kunci server `backend/data/secret.key` dan `server.key` bersifat rahasia — cadangkan, jangan dibagikan.
- Audit log berantai-hash: Riwayat Aktivitas → **Verifikasi integritas** mendeteksi perubahan langsung di database. Hanya ADMIN dapat membersihkan log (>30 hari), dan tindakannya sendiri dicatat.
- Ganti kunci pendaftaran secara berkala (Pengaturan → Pendaftaran Agent).

## Yang diterapkan agent di Windows
| Fitur | Mekanisme | Syarat |
|---|---|---|
| Blokir internet | Windows Firewall (grup “CMS-Agent”, LAN & server dikecualikan), hosts, kebijakan Chrome/Edge | Semua edisi; butuh agent berjalan sebagai SYSTEM |
| Whitelist/blacklist | Kebijakan `URLBlocklist/Allowlist` Chrome/Edge + hosts; DNS-over-HTTPS & incognito dimatikan | Chrome/Edge terpasang; browser lain dikunci oleh daftar aplikasi |
| Batas tab, blokir URL, download | **Managed Browser** (Chrome/Edge via DevTools Protocol) | Siswa harus memakai pintasan “Browser Sekolah” (dibuat installer); browser tak terkelola ditutup |
| Aplikasi | Pengawas proses; AppLocker bila `-AppLocker` | AppLocker butuh Windows **Enterprise/Education** |
| Microsoft Store | Kebijakan `RemoveWindowsStore` | Hanya Enterprise/Education |
| Lock/pesan/banner/layar | Helper di sesi pengguna (IPC lokal terautentikasi) | Siswa sedang login |
| Wake-on-LAN | Magic packet UDP dari server | BIOS/NIC mendukung, kabel LAN, subnet sama |

## Pelepasan & pelepasan darurat
Dashboard → Daftar Komputer → pilih komputer → **Lepas perangkat dari server** membersihkan semua aturan dan mencabut token. Tanpa jaringan: di PC siswa (Administrator) jalankan `ClassroomCLI.exe uninstall-policies` lalu `uninstall_agent.ps1`. Aturan firewall bernama “CMS-Agent …” dapat dihapus manual.

## Pencadangan
Cadangkan database (`mysqldump classroom_management_db`) dan folder `backend/data` (secret.key, sertifikat). Pemulihan server dengan `secret.key` lama menjaga agent tetap tersambung.

## Batas yang perlu diketahui
Tidak ada produk yang dapat menjamin 100% terhadap siswa dengan hak Administrator lokal; **jangan beri siswa akun Administrator**. Download dari aplikasi non-browser tidak dapat dicegat. Fitur Windows belum diuji pada perangkat sungguhan oleh pengembang — lakukan uji pilot.
