# Menu Pengaturan & Manajemen Hak Akses - Dokumentasi

## Overview
Fitur pengaturan dan manajemen hak akses telah ditambahkan ke sistem E-LOGBOOK PPDS-2. Setiap pengguna (trainee, dosen, admin) dapat mengakses menu pengaturan mereka, dan admin memiliki panel khusus untuk manajemen hak akses.

---

## 1. MENU PENGATURAN - TRAINEE/DOSEN (index.html)

### Lokasi
- Dashboard → Menu **Pengaturan** di sidebar
- Atau klik **Pengaturan** di profil dropdown

### Fitur yang Tersedia

####🔐 Ganti Password
- Memerlukan password saat ini untuk keamanan
- Password baru harus diconfirm dan minimal 6 karakter
- Menggunakan bcrypt hashing untuk keamanan maksimal
- Auto-dismiss notification setelah berhasil/error

#### 👤 Informasi Pengguna
- Menampilkan data profil read-only:
  - Username
  - Nama Lengkap
  - Subspesialisasi
  - Semester
  - Institusi
  - Email
  - Telepon

#### 🔔 Pengaturan Notifikasi
- Terima notifikasi via email (checkbox)
- Pengingat logbook mingguan (checkbox)
- Notifikasi persetujuan logbook (checkbox)
- *Status: Untuk implementasi di update mendatang*

#### 🔒 Privasi
- Informasi tentang data yang dikumpulkan
- Link kebijakan privasi
- Kontak administrator untuk pertanyaan privasi

#### ❓ Bantuan & Dukungan
- Penjelasan tentang aplikasi
- Fitur utama yang ada
- Versi aplikasi

### CSS Styling
- `.settings-card` - Card untuk setiap seksi pengaturan
- `.info-display` - Display informasi pengguna
- `.info-row` - Baris informasi key-value
- `.checkbox-group` - Grup checkbox
- `.privacy-info` / `.help-info` - Info blocks

### JavaScript
- `loadSettingsData()` - Load data profil dari API
- Dijalankan otomatis saat membuka menu Pengaturan

---

## 2. ADMIN PANEL - MENU HAK AKSES (admin.html)

### Lokasi
- Admin Panel → Menu **🔐 Hak Akses** di sidebar

### Fitur
Menampilkan tabel hak akses untuk 3 grup user:

#### 👤 TRAINEE (Peserta PPDS-2)
✅ Permissions:
- Melihat logbook milik sendiri
- Membuat logbook baru
- Mengubah logbook milik sendiri
- Mengubah password sendiri

❌ Limitations:
- TIDAK bisa melihat logbook user lain

#### 👨‍🏫 DOSEN (Pendidik PPDS-2)
✅ Permissions:
- Melihat logbook milik sendiri
- Melihat logbook trainee dengan subspesialisasi sama
- Membuat logbook baru
- Mengubah password sendiri

❌ Limitations:
- TIDAK bisa melihat trainee dari subspesialisasi berbeda
- TIDAK bisa mengelola user

#### 🔑 ADMIN (Administrator)
✅ All Permissions:
- Melihat semua logbook (semua user & subspesialisasi)
- Mengelola semua user (buat, edit, hapus)
- Mengubah grup/peran user (Trainee ↔ Dosen ↔ Admin)
- Mengaktifkan/Nonaktifkan user
- Mengubah password sendiri
- Mengakses panel admin
- Melihat statistik sistem

### UI Design
- Tabel dengan permission items yang disabled (read-only)
- Green checkmarks (✅) untuk allowed permissions
- Red X (❌) untuk restricted permissions
- Color-coded by role

---

## 3. ADMIN PANEL - MENU PENGATURAN (admin.html)

### Lokasi
- Admin Panel → Menu **⚙️ Pengaturan** di sidebar

### Fitur yang Tersedia

#### 🔐 Ganti Password Admin
- Form untuk mengubah password admin
- Validasi password sama dengan Trainee/Dosen
- Success/error notifications

#### ℹ️ Informasi Sistem
- Nama Aplikasi: E-LOGBOOK PPDS-2
- Versi: 1.0.0
- Database: MySQL
- Total User Aktif: *dinamis dari database*
- Total Logbook: *untuk implementasi mendatang*

#### 🏥 Daftar Subspesialisasi
- Tampilan read-only dari 5 subspesialisasi:
  1. Fertilitas Endokrinologi dan Reproduksi
  2. Fetomaternal
  3. Onkologi Ginekologi
  4. Obstetri Ginekologi Sosial
  5. Uroginekologi

### Styling
- `.settings-group` - Card untuk setiap seksi
- `.info-box` - Box untuk system info
- `.subspecialization-list` - List subspesialisasi
- Alert boxes untuk notifications

### JavaScript
- `loadSystemInfo()` - Load total user aktif dari API
- `handleAdminPasswordSubmit()` - Handle password change
- Dijalankan otomatis saat membuka menu Pengaturan

---

## 4. INTEGRASI DENGAN API

### Endpoints yang Digunakan

#### Profile API (`php/user_profile.php`)
```
GET  /php/user_profile.php?action=profile
     Returns: { success, data: { id, username, full_name, specialization, ... } }

POST /php/user_profile.php
     action: change_password
     current_password, new_password
     Returns: { success, message }
```

#### User Management API (`php/user_management.php`)
```
GET  /php/user_management.php?action=list
     Returns: { success, data: [ { id, username, full_name, role, ... } ] }
```

---

## 5. UI/UX IMPROVEMENTS

### Menu Navigation
- Sidebar menu item untuk "Pengaturan"
- Dropdown profile menu link untuk "Pengaturan"
- Admin sidebar dengan "Hak Akses" dan "Pengaturan"

### Visual Feedback
- Alert messages untuk password change (success/error)
- Auto-dismiss notifications setelah 4 detik
- Disabled checkboxes untuk hak akses (read-only)
- Color-coded role badges (Trainee: Blue, Dosen: Orange, Admin: Red)

### Responsive Design
- Settings cards stack vertically
- Form fields responsive
- Admin settings grid layout

---

## 6. TESTING CHECKLIST

Menu Pengaturan (Trainee/Dosen):
- [ ] Buka menu Pengaturan dari sidebar
- [ ] Lihat informasi profil user
- [ ] Coba ganti password (dengan password yang benar)
- [ ] Verifi password change berhasil
- [ ] Check checkbox notifikasi (belum berfungsi)
- [ ] Lihat privacy info dan help

Admin - Menu Hak Akses:
- [ ] Login sebagai admin
- [ ] Klik menu "Hak Akses"
- [ ] Lihat permission table untuk semua role
- [ ] Verifi checkbox disabled (read-only)
- [ ] Check green/red indicators tepat

Admin - Menu Pengaturan:
- [ ] Login sebagai admin
- [ ] Klik menu "Pengaturan"
- [ ] Lihat system information
- [ ] Lihat total user aktif terload
- [ ] Lihat daftar subspesialisasi
- [ ] Coba ganti password admin
- [ ] Verifi password change berhasil

---

## 7. FUTURE ENHANCEMENTS

Fitur yang bisa ditambahkan di update mendatang:
- [ ] Notification settings - aktually send emails
- [ ] Log activity history
- [ ] User role change audit trail
- [ ] System backup management
- [ ] Database statistics
- [ ] User online status
- [ ] Settings export/import
- [ ] Application theme settings
- [ ] Language selection
- [ ] Access logs viewer

---

## File Modified

1. **admin.html**
   - Added "Hak Akses" menu item
   - Added access-rights section dengan permission table
   - Enhanced settings section dengan password change & system info
   - Added CSS for role badges dan settings styling
   - Added JavaScript untuk admin password change

2. **index.html**
   - Enhanced Pengaturan section dengan multiple cards
   - Added user information display
   - Added notification preferences
   - Added privacy info & help sections
   - Added loadSettingsData population

3. **js/app.js**
   - Added `loadSettingsData()` function
   - Added global `currentUserRole` variable

4. **js/script.js**
   - Updated `showSection()` untuk auto-load settings data

5. **css/style.css**
   - Added `.settings-card` styling
   - Added `.info-display` dan `.info-row` styling
   - Added `.checkbox-group` styling
   - Added `.privacy-info` dan `.help-info` styling
   - Added admin panel styles untuk role badges & settings

---

## Kontak & Support

Untuk pertanyaan atau laporan bug:
- Admin: Hubungi administrator sistem
- Email: admin@example.com

Versi: 1.0.0
Update: February 25, 2026
