Pengguna & Peran
Ringkasan
Section titled “Ringkasan”Setiap orang yang bisa masuk dashboard punya satu akun dengan satu peran. Peran itulah yang menentukan menu apa yang muncul dan halaman apa yang boleh dibuka. Fitur ini mengurus data akun itu: melihat daftar user, mengubah profil, dan mengganti password — baik password sendiri maupun password user lain (oleh admin).
Siapa yang pakai
Section titled “Siapa yang pakai”- Admin — menambah/mengubah data user dan mereset password user lain.
- Setiap user — mengganti password sendiri dan memeriksa profilnya.
flowchart LR
A[Admin buka daftar user] --> B[Filter / cari user]
B --> C[Pilih user]
C --> D{Ubah apa?}
D -- profil / peran --> E[PUT user]
D -- password user lain --> F[PUT user/change-password]
D -- password sendiri --> G[PATCH user/change-my-password]
E --> H[Data user tersimpan]
F --> H
G --> H
H --> I[Perubahan berlaku pada login berikutnya]
- Admin membuka daftar user dan memfilter berdasarkan kriteria yang tersedia.
- Admin memilih user, lalu mengubah profil/peran atau mereset password.
- User sendiri bisa mengganti password lewat menu profil (
change-my-password). - Perubahan peran baru terasa setelah user login ulang, karena menu dan rute disaring dari data peran saat halaman dimuat.
Untuk pemakai
Section titled “Untuk pemakai”- Buka menu pengaturan user (bagian Pengguna di sidebar, hanya muncul untuk peran yang diberi akses).
- Gunakan filter untuk menemukan akun; daftar dibagi per halaman.
- Pilih akun, ubah peran atau data profil, lalu simpan.
- Untuk mengganti password sendiri: buka menu profil → ganti password → isi password lama dan baru.
Kalau gagal: perubahan peran tidak langsung terlihat di layar user tersebut — minta dia login ulang. Kalau menu pengaturan tidak muncul sama sekali, peran akunmu memang tidak punya akses.
Untuk developer
Section titled “Untuk developer”| Hal | Keterangan |
|---|---|
| Logika | src/features/user/ (api.ts, hooks/, type/UserRole.ts) |
| Penjaga akses | src/containers/_nav.jsx (menu) dan src/containers/TheContent.jsx (rute) |
| Server | GET user/me, GET /user, PUT /user, PUT /user/change-password, PATCH /user/change-my-password |
Aturan teknis:
- Daftar user berhalaman.
getAllUsermemakaiparamsdan mengembalikanPage<AllUser>, bukan array biasa. - Empat jalur tulis yang berbeda.
PUT /useruntuk data user,PUT /user/change-passworduntuk mereset password user lain,PATCH /user/change-my-passworduntuk password sendiri,GET user/meuntuk profil sesi berjalan. Jangan tertukar: hanyachange-my-passwordyang tidak butuh identitas user di body. - Peran adalah enum tertutup di
src/features/user/type/UserRole.ts(25 nilai):ADMIN,FINANCE,FINANCE_EICK,FINANCE_SPV,FINANCE_PARTNER,COST_CONTROL,CUSTOMER_SERVICE,CS_MANAGER,CRM_MANAGER,ANALYST,ADVERTISER,PARTNER,HELP_DESK,SUPPLY_CHAIN_SUPERVISOR,SHOPEE_PLATFORM,TIKTOK_PLATFORM,INPUTTER,PRINCIPAL,HR,CEO,CBO,CSO,MT,AFFILIATE,AFFILIATE_MANAGER. Menambah peran berarti menyentuh enum,_nav.jsx, danroutes.jssekaligus. - Otorisasi hanya di klien. Penjagaan menu/rute berjalan di React. Server tetap harus menolak sendiri; jangan menganggap rute tersembunyi berarti endpoint aman.
Relasi antar fitur
Section titled “Relasi antar fitur”- Dipakai oleh: Login & Akses — peran dibaca setelah login untuk menyusun menu.
- Dipakai oleh: Transaksi — setiap rute transaksi mendaftar peran yang boleh membukanya.
Aturan & edge case
Section titled “Aturan & edge case”- Satu akun = satu peran (
user.role), bukan daftar peran;user.rolesyang dipakai di beberapa tempat berisi objek peran lain (mis. platform), jadi jangan disamakan. - Rute tanpa
rolesterbuka untuk semua user yang login. - Perubahan peran tidak memaksa sesi aktif milik user tersebut berakhir; efeknya baru terasa pada pemuatan berikutnya.
Yang belum ditelusuri
Section titled “Yang belum ditelusuri”- Isian form tambah/ubah user (tipe kendali, wajib/tidak, validasi per field)
- Urutan proses saat simpan dan respons yang diharapkan
- Redirect atau pesan setelah simpan berhasil
Riwayat
Section titled “Riwayat”- 2026-11-12 — dokumen dibuat dari
erdigmabranchmain@2e7ad26.