# Akun Contoh eKoas (untuk uji coba)

> Dibuat oleh `database/seed_demo.php`. **Jangan dipakai di server produksi.** Berkas ini masuk `.gitignore` agar kata sandi tidak ikut ke repositori.

Alamat: `http://localhost/lab/Koas_MU/Koas_MU/public/login.php`

Kata sandi seluruh akun contoh: **`Demo@2026`**

| Peran | Username | Nama | Keterangan |
|---|---|---|---|
| super_admin | `admin` | Super Admin | Kata sandi dari installer (`65d4f2ed4cd2`), kecuali sudah Anda ganti |
| admin_fk | `fk` | Admin Fakultas Contoh | Kelola data master, rotasi, laporan, pengaturan |
| admin_rs | `rs` | Admin RS Contoh | Peran admin RS (dashboard ringkasan) |
| pembimbing + koordinator_stase | `koor_ipd` | dr. Andi Wijaya | Koordinator IPD |
| pembimbing | `pemb_ipd1` | dr. Budi Santoso | Pembimbing IPD |
| pembimbing | `pemb_ipd2` | dr. Citra Lestari | Pembimbing IPD |
| pembimbing + koordinator_stase | `koor_bdh` | dr. Dedi Kurniawan | Koordinator BDH |
| pembimbing | `pemb_bdh1` | dr. Eka Prasetya | Pembimbing BDH |
| pembimbing + koordinator_stase | `koor_ank` | dr. Fitri Handayani | Koordinator ANK |
| pembimbing | `pemb_ank1` | dr. Gunawan Saputra | Pembimbing ANK |
| mahasiswa | `2026001` | Ahmad Rizky | Mahasiswa angkatan 2026 |
| mahasiswa | `2026002` | Bunga Maharani | Mahasiswa angkatan 2026 |
| mahasiswa | `2026003` | Candra Putra | Mahasiswa angkatan 2026 |
| mahasiswa | `2026004` | Dewi Anggraini | Mahasiswa angkatan 2026 |
| mahasiswa | `2026005` | Eko Nugroho | Mahasiswa angkatan 2026 |
| mahasiswa | `2026006` | Farah Nabila | Mahasiswa angkatan 2026 |
| mahasiswa | `2026007` | Galih Pratama | Mahasiswa angkatan 2026 |
| mahasiswa | `2026008` | Hana Safitri | Mahasiswa angkatan 2026 |

## Di mana kata sandi di database?

Kolom `password` pada tabel `users` **tidak menyimpan kata sandi asli**, hanya *hash* satu arah (contoh: `$2y$10$...`, 60 karakter; akun `admin` memakai `$argon2...`). Hash tidak dapat dikembalikan menjadi kata sandi; aplikasi hanya membandingkannya saat login (`password_verify`). Ini disengaja demi keamanan dan bukan kekeliruan.

- **17 akun contoh** (semua kecuali `admin`): kata sandinya `Demo@2026`, ditetapkan di `database/seed_demo.php` (konstanta `DEMO_PASSWORD`). Tabel di atas adalah satu-satunya tempat kata sandi ini dicatat.
- **`admin`**: kata sandi acak dari `database/install.php`, ditampilkan **sekali** saat instalasi (tercatat di tabel atas, kecuali sudah diganti lewat menu Profil).
- **Akun yang dibuat lewat aplikasi** (tambah mahasiswa/pembimbing, impor CSV, reset sandi): kata sandi awal acak, **hanya tampil sekali** di layar setelah dibuat dan tidak disimpan di mana pun. Pengguna wajib menggantinya saat login pertama.

**Lupa/hilang kata sandi:** super_admin membuka menu *Pengguna* lalu klik *Reset sandi* untuk membuat kata sandi sementara baru. Alternatif lewat baris perintah:

```
php -r "require 'app/bootstrap.php'; db()->prepare('UPDATE users SET password=?, must_change_password=1 WHERE username=?')->execute([password_hash('SandiSementara1', PASSWORD_DEFAULT), 'NAMA_USER']);"
```

Untuk memeriksa akun tertentu masih memakai kata sandi contoh: `php -r "require 'app/bootstrap.php'; $h=db()->query(\"SELECT password FROM users WHERE username='fk'\")->fetchColumn(); var_dump(password_verify('Demo@2026', $h));"`

## Skenario uji yang sudah disiapkan

- **Periode** Kepaniteraan Angkatan 2026; **Kelompok A** (2026001–2026004) dan **Kelompok B** (2026005–2026008).
- Kelompok A: stase ANK sudah **selesai & final** (2026001 lulus; 2026003 remedial), sedang menjalani **IPD** (rotasi berjalan).
- Kelompok B: sedang menjalani **BDH**; **ANK** dijadwalkan mulai 26 Okt 2026.
- `2026001` — logbook IPD berisi entri terverifikasi, menunggu, **ditolak** (dengan alasan), dan draf; bisa dipakai menguji alur perbaikan-ajukan ulang.
- `pemb_ipd1` dan `pemb_ipd2` — punya entri **menunggu verifikasi** (uji setujui massal dan tolak).
- `koor_ipd` — uji penetapan pembimbing, capaian stase, input nilai ujian, finalisasi (butuh Mini-CEX, DOPS, profesionalisme, dan ujian lengkap).
- `fk` — uji data master, rotasi (coba kelompok melebihi kapasitas), laporan nilai (unduh CSV), pengaturan, pengumuman.
