Files

11 KiB

User Guide — Panduan Admin

Panduan ini untuk Administrator atau Super Admin yang mengoperasikan aplikasi.


Login

  1. Buka https://domain.com/login
  2. Masukkan email & password
  3. (Opsional) jika 2FA diaktifkan, kode 6 digit dikirim ke email — input di halaman /2fa
  4. (Opsional) centang Trust this device untuk skip 2FA selama 30 hari (cookie aman)
  5. (Opsional) gunakan Passkey (biometrik) jika sudah didaftarkan di profil
  6. (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

  1. Klik tombol Customize di pojok kanan atas halaman Dashboard
  2. Panel kustomisasi muncul dengan daftar widget:
    • Toggle switch untuk tampilkan/sembunyikan setiap widget
    • Drag-and-drop widget untuk mengubah urutan tampilan
  3. Klik Save Layout — preferensi tersimpan di database per akun
  4. 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)

  1. Aktifkan toggle Enable Maintenance Mode
  2. Isi judul & pesan untuk pengunjung
  3. (Opsional) set End Time untuk countdown timer — aplikasi auto-release saat waktu berlalu
  4. (Opsional) isi Secret Key — admin bisa tetap akses via domain.com/{secret}
  5. (Opsional) isi IP Whitelist — IP yang dikecualikan dari maintenance
  6. 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 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

  1. Setelah menjalankan seeder, selalu clear cache: ./vendor/bin/sail artisan cache:clear
  2. Backup sebelum update besar atau perubahan konfigurasi penting
  3. Selalu uji koneksi (Email, SAP, Backup) lewat tombol Test Connection sebelum save
  4. Setelah ubah .env, jalankan: ./vendor/bin/sail artisan optimize:clear
  5. Cek Action Logs secara berkala untuk audit keamanan
  6. Maintenance Mode: selalu set Secret Key agar tidak terkunci dari panel sendiri
  7. IP Whitelist Admin: tambahkan dulu IP statis Anda sebelum mengaktifkan, agar tidak terkunci
  8. 2FA: untuk akun super admin, sangat disarankan diaktifkan
  9. 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