11 KiB
User Guide — Panduan Admin
Panduan ini untuk Administrator atau Super Admin yang mengoperasikan aplikasi.
Login
- Buka
https://domain.com/login - Masukkan email & password
- (Opsional) jika 2FA diaktifkan, kode 6 digit dikirim ke email — input di halaman
/2fa - (Opsional) centang Trust this device untuk skip 2FA selama 30 hari (cookie aman)
- (Opsional) gunakan Passkey (biometrik) jika sudah didaftarkan di profil
- (Opsional) login via Google / Facebook / GitHub jika Social OAuth diaktifkan
Akun default setelah seeder: lihat tabel di README.md. Jika perlu reset, jalankan:
./vendor/bin/sail artisan db:seed --class=AdminUserSeeder ./vendor/bin/sail artisan cache:clear
Rate Limit
Untuk mencegah brute force:
| Endpoint | Limit |
|---|---|
/login (web) |
5/menit per IP |
/2fa verify |
5/menit per IP |
/forgot-password |
dibatasi via Spatie throttle |
/api/v1/login (mobile) |
10/menit per IP |
/api/v1/otp/send |
5/menit per IP |
/api/v1/otp/verify |
10/menit per IP |
Jika kena rate limit, response 429 Too Many Requests — tunggu 1 menit.
Dashboard
Halaman pertama setelah login. Menampilkan statistik sistem secara real-time via WebSocket (Laravel Reverb). Jika koneksi WebSocket tidak tersedia, data di-refresh otomatis tiap 30 detik.
Widget Bawaan
| Widget | Isi |
|---|---|
| CPU Load | Persentase penggunaan CPU dengan sparkline |
| Memory | RAM used/total |
| Storage | Disk used/total |
| Live Users | Sesi aktif saat ini |
| Queue Stats | Job pending/processed/failed |
| Activity Feed | Log aktivitas terbaru (butuh permission view health and logs) |
| AI Security Insight | Skor keamanan terakhir dari AI analysis (butuh permission view ai log analysis) |
Kustomisasi Dashboard
- Klik tombol Customize di pojok kanan atas halaman Dashboard
- Panel kustomisasi muncul dengan daftar widget:
- Toggle switch untuk tampilkan/sembunyikan setiap widget
- Drag-and-drop widget untuk mengubah urutan tampilan
- Klik Save Layout — preferensi tersimpan di database per akun
- Klik Reset to Default untuk kembali ke urutan dan visibilitas bawaan
Preferensi layout per-user — setiap admin bisa punya tata letak sendiri.
Menu Utama
1. Users — Manajemen Pengguna
Akses: sidebar → User Management
- Tambah / edit / hapus user (soft delete — bisa di-restore)
- Atur role (Super Admin, Admin, Custom)
- Aktif / nonaktifkan akun
- Bulk action — aktifkan/nonaktifkan/hapus banyak user sekaligus
- Impersonate — login sebagai user lain untuk debugging
- Tidak bisa impersonate diri sendiri
- Tidak bisa impersonate Super Admin/Developer
- Tidak bisa impersonate user inactive
- Tidak bisa nested impersonate (loop prevention)
Force delete diri sendiri di-blokir oleh sistem — gunakan akun admin lain bila perlu.
2. Roles & Permissions
Akses: sidebar → Access Control
- Buat role baru dan pilih permission yang diizinkan
- Permission dikelompokkan per kategori dalam dua panel:
- Panel kiri (Available) — permission yang belum diberikan ke role ini
- Panel kanan (Assigned) — permission yang sudah diberikan
- Pindahkan dengan drag-and-drop atau double-click item
- Gunakan search di masing-masing panel untuk filter cepat
- Category group headers muncul otomatis di panel Assigned saat ada permission dari kategori tersebut
- 85 granular tab permissions — setiap tab di Global Settings dan Mobile Settings punya permission sendiri (mis.
manage global settings password policy,view mobile settings kill switch) - Role dan permission bisa diaktif/nonaktifkan tanpa dihapus
- Audit trail tersedia: setiap perubahan role/permission tercatat
- Tidak bisa archive role yang masih dipakai user — pindahkan user dulu
3. Action Logs — Audit Trail
Akses: sidebar → Action History
Mencatat semua perubahan data: siapa, kapan, apa yang diubah, dari IP mana. Berguna untuk audit & forensik.
Sensitive fields (password, token, secret, 2fa_secret) otomatis di-redact dari log entry.
System Settings
Global Settings
Akses: System Settings → Global Settings
| Tab | Pengaturan |
|---|---|
| General (Branding) | Nama app, logo, favicon, tagline, footer, landing page visibility, locale |
| Login Security | Max attempts, lockout duration, 2FA, OTP, captcha (reCAPTCHA v2/v3), passkey (WebAuthn) |
| Password Policy | Panjang min/max, karakter wajib (uppercase/lowercase/angka/simbol), expiry, riwayat |
| Social Login / OAuth | Toggle Google/Facebook/GitHub OAuth, client ID & secret, callback URL |
| IP & Access | Whitelist/blacklist IP admin, CORS, rate limit, force HTTPS, HSTS |
| Notification | SMTP (host, port, encryption, from address), Telegram bot token & chat ID |
| AI Config | Provider (GPT/Gemini/Claude/DeepSeek/Grok/Mistral/OpenRouter), API key, model, temperature |
| SAP Integration | RFC host, system number, client, user, password — termasuk tombol Test Connection |
| Backup & Storage | Driver (local/S3/GDrive), jadwal, retensi, enkripsi, notifikasi |
| Maintenance | Toggle, pesan, judul, countdown, secret key, IP whitelist |
| Legal & Content | Privacy Policy, Terms of Use, About, Security Policy, Help Center (editor WYSIWYG) |
| Regional | Timezone, format tanggal, format waktu |
| Session | Driver, lifetime, single session, auto logout, remember me, cookie settings |
Tombol Save Configuration selalu muncul di pojok kanan bawah (floating). Setelah save, cache otomatis di-invalidate.
Mobile Settings
Akses: System Settings → Mobile Settings
Kontrol konfigurasi aplikasi mobile dari jarak jauh — warna tema, base URL API, FCM topic, biometric login, kill switch, pesan maintenance mobile, dll. Perubahan langsung tersinkron ke aplikasi mobile via endpoint /api/v1/mobile/sync (dengan ETag caching).
Maintenance Mode
Akses: System Settings → Maintenance (atau via tab di Global Settings)
- Aktifkan toggle Enable Maintenance Mode
- Isi judul & pesan untuk pengunjung
- (Opsional) set End Time untuk countdown timer — aplikasi auto-release saat waktu berlalu
- (Opsional) isi Secret Key — admin bisa tetap akses via
domain.com/{secret} - (Opsional) isi IP Whitelist — IP yang dikecualikan dari maintenance
- Klik Apply Maintenance Settings
Live preview ditampilkan persis seperti yang dilihat pengunjung.
Backup & Restore
Akses: System Settings → Backup & Storage
- Pilih driver: Local / Amazon S3 / Google Drive
- Atur jadwal backup otomatis, retensi (berapa backup disimpan), dan enkripsi AES-256
- Operasi: Run Backup Now, Download, Restore, Delete
- Notifikasi backup bisa dikirim ke email atau webhook
- Tombol Test Connection untuk verifikasi driver sebelum simpan
System Monitoring
Akses: System Settings → System Monitoring
| Tab | Isi |
|---|---|
| Logs | Laravel error log (filter level, search, download, clear) |
| SAP Logs | Log integrasi SAP RFC — status request dan error |
| Mobile Logs | Log yang dikirim dari aplikasi mobile (/api/v1/mobile/log) |
| Background Jobs | Status queue, retry / delete failed jobs |
| AI Usage | Riwayat penggunaan AI — provider, model, token, waktu |
| Health | CPU, memory, disk usage secara real-time |
Notification Center
Akses: sidebar → Notifications (ikon lonceng)
Pusat notifikasi sistem real-time via WebSocket (Reverb). Admin bisa:
- Melihat notifikasi masuk
- Menandai sudah dibaca (satu atau semua)
- Broadcast notifikasi ke semua user atau role tertentu
Session Manager
Akses: System Settings → Session Manager
Lihat semua sesi aktif seluruh user. Bisa memaksa logout user tertentu jika dicurigai kompromi akun.
Jika Single Session aktif di Global Settings, user otomatis di-logout dari device lama saat login di device baru.
Profil & Keamanan Akun
Akses: klik nama/avatar di pojok kanan atas → Profile
- Update nama, email, avatar
- Ganti password (cek policy: min 12, mixed-case, digit, symbol; tidak boleh sama dengan password sebelumnya jika history blocker aktif)
- Daftarkan / hapus Passkey (biometrik)
- Lihat & cabut sesi aktif
Password Expiry
Jika admin mengaktifkan Password Expiry di Global Settings → Password Policy, user akan diarahkan ke /profile/password saat password lewat masa berlaku, dengan pesan warning.
Halaman Legal (UU PDP)
Halaman publik yang bisa diakses tanpa login:
| URL | Konten |
|---|---|
/legal/privacy |
Kebijakan Privasi |
/legal/tos |
Syarat & Ketentuan |
/legal/about |
Tentang Biiproject |
/legal/security |
Kebijakan Keamanan |
/legal/help |
Pusat Bantuan & FAQ |
Konten semua halaman ini dikelola via Global Settings → Legal & Content.
Jika versi dokumen (pdp_document_version atau tos_document_version) diperbarui, user yang sudah login akan diarahkan ke halaman re-agree (/legal/re-agree) dan wajib menyetujui ulang sebelum bisa mengakses aplikasi.
Tips Operasional
- Setelah menjalankan seeder, selalu clear cache:
./vendor/bin/sail artisan cache:clear - Backup sebelum update besar atau perubahan konfigurasi penting
- Selalu uji koneksi (Email, SAP, Backup) lewat tombol Test Connection sebelum save
- Setelah ubah
.env, jalankan:./vendor/bin/sail artisan optimize:clear - Cek Action Logs secara berkala untuk audit keamanan
- Maintenance Mode: selalu set Secret Key agar tidak terkunci dari panel sendiri
- IP Whitelist Admin: tambahkan dulu IP statis Anda sebelum mengaktifkan, agar tidak terkunci
- 2FA: untuk akun super admin, sangat disarankan diaktifkan
- Single Session: untuk environment sensitif (PII, finance), aktifkan agar 1 akun = 1 device
Bantuan & Troubleshooting
| Masalah | Solusi |
|---|---|
| Lupa password admin | ./vendor/bin/sail artisan tinker → reset via model User |
| Panel tidak responsif / data lama | ./vendor/bin/sail artisan optimize:clear + cache:clear |
| Error 500 | Cek storage/logs/laravel.log atau menu System Monitoring → Logs |
| Setting yang baru disimpan tidak muncul | ./vendor/bin/sail artisan cache:clear |
| User tidak bisa login | Cek status akun di User Management, pastikan role & permission aktif |
| Notifikasi real-time tidak muncul | Pastikan Reverb berjalan: supervisorctl status biiproject-reverb |
| Dashboard stats tidak update otomatis | Cek koneksi WebSocket di browser DevTools (Console). Jika gagal, refresh — akan fallback ke polling 30 detik. |
| Widget tersimpan tidak muncul | Buka Customize panel, klik Reset to Default, lalu coba Save Layout ulang. |
| Tab Settings tidak bisa diakses | Permission tab-level mungkin belum diberikan ke role Anda — minta Super Admin assign via Roles & Permissions. |
| Kena rate limit terus | Cek IP whitelist admin, tunggu 1 menit, atau reset via php artisan cache:clear |
| 2FA email tidak masuk | Verifikasi SMTP di Global Settings → Notifications + cek log queue |
| OAuth Google/Facebook gagal | Cek /auth/callback reachable (bukan 404), Client ID/Secret valid, redirect URI cocok |
| Health endpoint return 503 | Buka /api/health, lihat field checks.* — yang fail mengindikasikan dependensi rusak. warn masih 200. |
| User di-logout otomatis | Single-session mungkin aktif (login dari device lain), atau password expired |