Baik, siap! Kita akan melanjutkan ke tahap pengembangan berikutnya: Manajemen Staff/Moderator Vendor.
Pada tahap ini, kita akan memungkinkan vendor untuk menambahkan dan mengelola staff atau moderator yang dapat membantu mengelola toko mereka dengan hak akses yang dapat dikustomisasi.
Tahap 15: Manajemen Staff/Moderator Vendor
15.1. Pembaruan Dashboard Vendor
Pertama, mari kita tambahkan tautan ke “Manajemen Staff/Moderator” di dashboard vendor.
15.2. Vendor Moderator Controller
Kita akan membuat controller untuk mengelola staff/moderator vendor.
VendorModeratorController
14 Jul, 18.17
Buka https://g.co/gemini/share/35264a4a2d66
Bash
php artisan make:controller Vendor/VendorModeratorController
15.3. Rute Moderator Vendor
Tambahkan rute ini di routes/web.php di dalam grup vendor middleware:
Rute Moderator Vendor
14 Jul, 18.17
Buka https://g.co/gemini/share/b2d8da0d4d2d
15.4. Tampilan Daftar Moderator Vendor
Buat direktori resources/views/vendor/moderators/ dan di dalamnya buat file index.blade.php.
Vendor Moderators Index View
14 Jul, 18.17
Buka https://g.co/gemini/share/c8075d6b7e7a
15.5. Tampilan Tambah Moderator Vendor
Buat file resources/views/vendor/moderators/create.blade.php.
Vendor Moderators Create View
14 Jul, 18.17
Buka https://g.co/gemini/share/683049be012c
15.6. Tampilan Edit Moderator Vendor
Buat file resources/views/vendor/moderators/edit.blade.php.
Vendor Moderators Edit View
14 Jul, 18.17
Buka https://g.co/gemini/share/cb2482da56ec
15.7. Penerapan Hak Akses Moderator (Contoh Middleware)
Untuk menerapkan hak akses ini, Anda bisa membuat middleware atau memeriksa permission langsung di controller atau view.
Contoh: Middleware untuk memeriksa hak akses moderator
CheckVendorModeratorPermission Middleware
14 Jul, 18.17
Buka https://g.co/gemini/share/366bbe7f1c67
Bash
php artisan make:middleware CheckVendorModeratorPermission
Daftarkan middleware ini di app/Http/Kernel.php:
Daftarkan CheckVendorModeratorPermission di Kernel
14 Jul, 18.17
Buka https://g.co/gemini/share/ca2dc6e0bfd4
Contoh Penggunaan Middleware di Rute Vendor:
Anda bisa menerapkan middleware ini pada rute-rute yang relevan di routes/web.php dalam grup vendor middleware.
Penerapan Middleware Permission di Rute Vendor
14 Jul, 18.17
Buka https://g.co/gemini/share/82f70e686e6e
Penting: Anda perlu menambahkan relasi hasOne dari User ke VendorModerator di model User agar Auth::user()->vendorModerator bisa bekerja:
Relasi VendorModerator di User Model
14 Jul, 18.17
Buka https://g.co/gemini/share/5f1e98d12226
Ringkasan Tahap Pengembangan Saat Ini:
Anda telah berhasil mengimplementasikan:
- Manajemen Staff/Moderator Vendor:
- Dashboard vendor diperbarui dengan tautan ke manajemen moderator.
- Controller VendorModeratorController untuk CRUD moderator.
- Rute untuk mengelola moderator.
- Tampilan daftar, tambah, dan edit moderator dengan pengaturan hak akses spesifik (menggunakan checkbox).
- Implementasi middleware CheckVendorModeratorPermission untuk melindungi rute berdasarkan hak akses moderator.
- Relasi yang diperlukan di model User dan VendorModerator.
Langkah Selanjutnya yang Perlu Anda Lakukan:
- Pastikan semua file migration sudah dijalankan (php artisan migrate).
- Pastikan semua model Eloquent sudah ada dengan relasi yang benar, termasuk relasi baru untuk moderator.
- Uji coba:
- Login sebagai user dengan role = ‘vendor’.
- Akses /vendor/moderators dan coba tambahkan moderator baru (dengan email yang belum terdaftar sebagai user).
- Login sebagai moderator yang baru dibuat. Pastikan mereka diarahkan ke /vendor/dashboard (sesuai RouteServiceProvider).
- Coba akses rute produk vendor (/vendor/products) sebagai moderator. Jika Anda menerapkan middleware moderator_permission:manage_products, pastikan aksesnya sesuai dengan permission yang Anda berikan saat membuat moderator.
- Coba edit permission moderator dan lihat dampaknya pada akses mereka.
- Coba hapus moderator.
Setelah Anda berhasil mengimplementasikan dan menguji coba bagian ini, kita bisa melanjutkan ke tahap berikutnya, yaitu Sistem Ulasan (Review).
Apakah ada pertanyaan atau bagian yang ingin Anda perjelas sebelum melanjutkan?
