Dokumen ini mendefinisikan batasan akses (RBAC) dan aturan sistem untuk setiap role pengguna di IPB Pre-Loved.
| Fitur | Guest | Buyer | Seller | Admin |
|---|---|---|---|---|
| Lihat Katalog Publik | โ | โ | โ | โ |
| Lihat Detail Produk | โ | โ | โ | โ |
| Login Google (@apps.ipb.ac.id) | โ | โ | โ | โ |
| Wishlist (Add/Remove) | โ | โ | โ | โ |
| Jual Barang (Create Listing) | โ | โ | โ | โ |
| Tandai Terjual (Sold Out) | โ | โ | โ | โ |
| Edit/Hapus Barang Sendiri | โ | โ | โ | โ |
| Urutkan Foto (Sorting) | โ | โ | โ | โ |
| Lihat Notifikasi (Approve/Reject) | โ | โ | โ | โ |
| Akses Dashboard Seller | โ | โ | โ | โ |
| Moderasi QC (Approve/Reject) | โ | โ | โ | โ |
| Blokir/Flag User | โ | โ | โ | โ |
| Lihat Audit Logs (Aktivitas Admin) | โ | โ | โ | โ |
BUYER.SELLER, user akan memiliki akses BUYER dan SELLER secara permanen.browser-image-compression untuk mengubah JPEG berat menjadi WebP ringan tanpa kehilangan detail 12MP-nya.ffmpeg.wasm atau library sejenis sebelum di-upload ke backend untuk menjaga performa server edge.APPROVED akan memaksa status kembali ke PENDING.@apps.ipb.ac.id yang diizinkan masuk (kecuali email admin yang didaftarkan khusus di environment).userId or role parameters passed from the client-side for sensitive operations. Always retrieve internally via getAuth().image/* atau video/*. Ekstensi file wajib sesuai dengan kontennya.createProduct hanya menerima URL yang berasal dari /api/images/products/. URL eksternal akan dibuang secara otomatis./api/upload (API Route) agar user mendapatkan feedback progress bar yang akurat.PENDING: Baru diupload atau baru diedit. Tidak muncul di katalog publik.APPROVED: Sudah divalidasi Admin. Muncul di katalog.REJECTED: Ditolak Admin (disertai alasan). Tidak muncul di katalog.