# SIA Fase 1 — Panduan Instalasi & Pengujian

## Isi paket
| File | Fungsi |
|---|---|
| `Rancangan_Fase0_Fase1_SIA.md` | Dokumen desain lengkap (baca dulu sebelum instalasi) |
| `migrasi_fase1_rbac.sql` | Migrasi database (RBAC + kolom baru guru/siswa/kelas) |
| `config.php` | Konfigurasi DB — **isi sama persis dengan config.php PresenSync** |
| `auth.php` | Library autentikasi (login, lockout, audit log, cek role) |
| `auth_api.php` | Endpoint API (login, logout, ganti password, whoami) |
| `bootstrap_users.php` | Skrip sekali-jalan: buat akun `users` dari data guru/siswa lama |
| `login.html` | Halaman login SIA |
| `ganti_password.html` | Halaman wajib ganti password (login pertama) |
| `dashboard.html` | Kerangka dashboard + sidebar collapsible berbasis role |

## Langkah instalasi

### 1. Backup dulu (wajib)
phpMyAdmin → database PresenSync → Export → format SQL → simpan di tempat aman.

### 2. Buat folder terpisah di server
Upload semua file di paket ini ke folder baru, misal `public_html/sia/`
(terpisah dari folder `presensync/`, tapi memakai **database yang sama**).

### 3. Isi config.php
Buka `config.php`, ganti `DB_NAME`/`DB_USER`/`DB_PASS` persis sama dengan
isi `config.php` milik PresenSync yang sudah jalan.

### 4. Jalankan migrasi database
phpMyAdmin → database yang sama → tab SQL → jalankan isi `migrasi_fase1_rbac.sql`.
Ini hanya menambah tabel & kolom baru — tidak menyentuh data PresenSync yang ada.

### 5. Lengkapi tanggal lahir guru (minimal untuk akun yang mau dites dulu)
Bootstrap butuh `tanggal_lahir` terisi untuk membuatkan akun. Untuk tes awal,
isi manual dulu lewat phpMyAdmin untuk 1-2 guru, contoh:
```sql
UPDATE guru SET tanggal_lahir = '1990-05-15' WHERE nipy = 'GANTI_NIPY_ANDA';
```

### 6. Jalankan bootstrap
Buka `https://sia.masw.sch.id/bootstrap_users.php` (atau path sesuai upload Anda)
di browser. Akan muncul ringkasan berapa akun berhasil dibuat & berapa yang
dilewati (karena tanggal lahir/NIS belum lengkap).

**Setelah berhasil dan sudah dicek, hapus atau pindahkan file
`bootstrap_users.php` keluar dari folder publik** — supaya tidak bisa
dipanggil siapapun dari internet.

### 7. Tetapkan role Kepala Madrasah & Admin pertama
Belum ada UI untuk ini di Fase 1 (menyusul di modul Master Data Pembimbing).
Untuk sekarang, jalankan manual lewat phpMyAdmin:
```sql
-- Cari user_id dari NIPY yang dimaksud
SELECT u.id, g.nama FROM users u JOIN guru g ON g.user_id = u.id WHERE g.nipy = 'GANTI_NIPY';

-- Tambahkan role (ulangi untuk role lain kalau perlu, misal Admin sekaligus Pembimbing)
INSERT INTO user_roles (user_id, role_id)
SELECT [ID_DARI_QUERY_DI_ATAS], id FROM roles WHERE kode = 'kepala_madrasah';
```

### 8. Tes login
Buka `login.html`, masukkan NIPY + password (tanggal lahir format `DDMMYY`).
Harus otomatis diarahkan ke halaman ganti password, lalu ke dashboard dengan
menu sesuai role yang di-assign.

## Yang BELUM ada di Fase 1 (menyusul di fase berikutnya)
- Halaman Master Data Pembimbing/Siswa/Kelas (baru kerangka menu, isi form menyusul di Fase 1 lanjutan atau Fase 2)
- Import massal NIS dari Excel (siap dibangun begitu file Excel data induk dikirim)
- Dashboard berisi pengumuman/kalender (Fase 4)
- Integrasi bacaan data PresenSync ke portal siswa (Fase 3)

## Uji keamanan yang bisa langsung dicoba
- Salah password 5x berturut-turut → akun harus terkunci 15 menit.
- Login dengan akun yang belum pernah set password baru → harus dipaksa ke `ganti_password.html`.
- Cek tabel `audit_logs` di phpMyAdmin setelah beberapa kali percobaan login (berhasil & gagal) — harus tercatat semua.
