IPB-Pre-Loved

๐Ÿฐ System Boundaries & Access Control

Dokumen ini mendefinisikan batasan akses (RBAC) dan aturan sistem untuk setiap role pengguna di IPB Pre-Loved.

๐Ÿ‘ฎ 1. Matriks Akses (Role-Based)

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) โŒ โŒ โŒ โœ…

๐Ÿ”„ 2. Alur Transisi Role (Upgrade)

  1. Initial State: Setiap user baru secara default adalah BUYER.
  2. Opt-in Seller: Buyer yang ingin berjualan harus melakukan โ€œUpgradeโ€ melalui profil.
  3. Requirement: Upgrade memerlukan validasi nomor WhatsApp aktif.
  4. Permanent: Sekali menjadi SELLER, user akan memiliki akses BUYER dan SELLER secara permanen.

๐Ÿ› ๏ธ 2. Aturan Media & Penyimpanan

๐Ÿ“ธ Foto

๐ŸŽฅ Video


๐Ÿ›ก๏ธ 3. Aturan Keamanan โ€œHardenedโ€

  1. Bait & Switch Protection: Setiap pengeditan pada produk yang sudah APPROVED akan memaksa status kembali ke PENDING.
  2. Domain Restriction: Hanya email dengan domain @apps.ipb.ac.id yang diizinkan masuk (kecuali email admin yang didaftarkan khusus di environment).
  3. Internal Session Authority: Never trust userId or role parameters passed from the client-side for sensitive operations. Always retrieve internally via getAuth().
  4. MIME Validation: API Upload hanya menerima file dengan header image/* atau video/*. Ekstensi file wajib sesuai dengan kontennya.
  5. Media URL Safety: Fungsi createProduct hanya menerima URL yang berasal dari /api/images/products/. URL eksternal akan dibuang secara otomatis.
  6. Progress Bar Standard: Semua upload media wajib menggunakan /api/upload (API Route) agar user mendapatkan feedback progress bar yang akurat.

๐Ÿšฆ 4. Alur Status Produk (State Machine)