Bab 8 — Role & Hak Akses (RBAC)
Sistem memakai RBAC per modul: setiap menu dan API dicek terhadap matriks modul × aksi. Matriks disimpan di database (RoleConfig) dengan fallback default per role.
8.1 Daftar role
| Role | Deskripsi singkat |
|---|---|
| SUPERADMIN | Semua modul + approve SO + kelola RBAC |
| SALES | Buat SO, customer, baca stok & master terbatas |
| OPERATIONS | SO, PO, stok, import, laporan operasional |
| FINANCE | Invoice, pembayaran, TAG/piutang, laporan keuangan |
| WAREHOUSE | DO, TTB, stok, retur |
Default bisa diubah di Master → Roles & Permissions.
8.2 Aksi (actions)
| Aksi | Label UI | Kegunaan |
|---|---|---|
read | Lihat | Menu & halaman; lihat data |
create | Buat | Record baru (SO, PO, TAG, …) |
update | Ubah | Edit, terima barang, pelunasan TAG, … |
delete | Hapus | Hapus / batalkan |
approve | Setujui | Hanya modul Sales Order → menu Persetujuan SO |
8.3 Modul & menu (lengkap)
| Modul | Menu / halaman utama |
|---|---|
dashboard | Dashboard /admin |
stock | Stock /admin/stock |
purchase-orders | Daftar PO |
purchase-order-returns | Retur PO |
sales-orders | Daftar SO, workflow, delivery dashboard |
sales-order-returns | Retur SO |
delivery-orders | API DO (tanpa menu terpisah) |
goods-receipts | API TTB |
invoices | Terbit & cetak invoice |
payments | Pembayaran SO/PO |
customer-billing | Piutang Customer, TAG, PDF TAG |
reports | Ringkasan, pembayaran/pengeluaran harian |
imports | Import vendor |
price-history | Riwayat harga |
users | Master Users |
vendors | Master Vendors |
customers | Master Customers + Limit Kredit |
skus | Master SKU |
car-types | Tipe mobil |
stock-balances | Master saldo stok |
settings | Pengaturan umum (footer) |
role-management | Roles & Permissions |
8.4 Default per role (ringkas)
| Modul | SUPERADMIN | SALES | OPERATIONS | FINANCE | WAREHOUSE |
|---|---|---|---|---|---|
| Dashboard | ✅ | ✅ | ✅ | ✅ | ✅ |
| SO buat/ubah | ✅ | ✅ | ✅ | baca | baca |
| SO approve | ✅ | ❌ | ❌ | ❌ | ❌ |
| DO / TTB | ✅ | baca | ✅ | baca | ✅ |
| Invoice | ✅ | baca | baca | ✅ | ❌ |
| Pembayaran SO/PO | ✅ | ❌ | ❌ | ✅ | ❌ |
| PO | ✅ | ❌ | ✅ | baca | baca/update |
| TAG / piutang | ✅ | ❌ | baca | ✅ | ❌ |
| Laporan umum | ✅ | ❌ | ✅ | ✅ | ❌ |
| Import | ✅ | ❌ | ✅ | baca | ❌ |
| Role management | ✅ | ❌ | ❌ | ❌ | ❌ |
* Semua sel bisa diubah di matriks; tabel ini hanya default awal jika belum ada konfigurasi di DB.
8.5 Persetujuan SO (approve)
- Centang Setujui pada baris Sales Order di matriks.
- Menu Persetujuan SO muncul di sidebar Operasi.
- Badge = jumlah SO
needsApproval. - API approve & pending-approval menolak user tanpa hak ini.
Terpisah dari limit diskon % di master User — keduanya bisa dipakai bersamaan.
8.6 Limit diskon per user
Master → Users → Limit diskon %.
Diskon order di atas limit user → SO butuh approval (jika belum disetujui approver).
8.7 Jika menu tidak muncul
- Cek role user di master Users.
- SUPERADMIN buka Roles & Permissions → pastikan modul punya Lihat.
- Untuk Persetujuan SO: pastikan Setujui pada Sales Order.
- Untuk Piutang: modul Tagihan Gabungan (TAG), bukan hanya Laporan.
- Logout → login ulang.
- Hard refresh
Ctrl + Shift + R.
8.8 Guard halaman
Meski mengetik URL manual, sistem mengarahkan ke dashboard jika tidak punya izin read (atau approve untuk halaman persetujuan).