Dalam era digital saat ini, perusahaan dituntut untuk memiliki website yang modern dan kaya fitur, terutama bagi mereka yang menjual jasa atau produk. Website bukan hanya menjadi etalase digital, tetapi juga memberikan nilai lebih kepada pengguna dengan menghadirkan fitur-fitur yang meningkatkan pengalaman mereka.
Misalnya, pengguna ingin merasakan kenyamanan saat melakukan transaksi, berinteraksi dengan konten, hingga mendapatkan layanan yang dipersonalisasi berdasarkan kebutuhan mereka. Di sinilah pentingnya sebuah sistem manajemen peran (role management) yang terstruktur dengan baik.
Dengan sistem manajemen peran, perusahaan dapat memberikan hak akses yang berbeda kepada pengguna berdasarkan perannya. Misalnya, admin memiliki akses penuh untuk mengelola produk, transaksi, dan pengguna, sementara pelanggan hanya bisa melihat dan membeli produk. Manajemen peran ini memberikan keamanan lebih pada sistem, memastikan bahwa hanya pihak yang berwenang yang dapat melakukan tindakan tertentu.
Laravel menjadi pilihan framework yang tepat untuk membangun website modern semacam ini. Dengan fitur-fitur yang lengkap dan komunitas developer yang besar, Laravel mempermudah proses development.
Selain itu, Laravel juga dikenal sebagai framework yang aman, cepat, dan scalable, sehingga cocok untuk membangun website dengan berbagai fitur kompleks. Ditambah dengan integrasi dengan Filament 3 sebagai admin panel yang kuat, dan Spatie 6 sebagai package untuk manajemen peran dan izin, proses development menjadi lebih cepat dan terorganisir.
Filament 3: Solusi Cepat untuk Membangun Dashboard Admin
Dalam proses pembuatan website modern, pengelolaan konten dan data di belakang layar menjadi sangat penting, terutama bagi admin yang perlu mengelola produk, transaksi, atau pengguna. Untuk itu, dibutuhkan sebuah dashboard admin yang mudah digunakan dan fungsional.
Filament 3 hadir sebagai solusi cepat bagi developer yang ingin membangun dashboard admin dengan lebih efisien. Package ini dirancang khusus untuk Laravel dan memudahkan proses pembuatan dashboard yang interaktif, lengkap dengan berbagai fitur seperti pengelolaan data, tabel, dan form yang dapat diintegrasikan dengan mudah.
Dengan menggunakan Filament 3, developer tidak perlu memulai semuanya dari nol. Fitur-fitur seperti tabel yang sudah dioptimalkan, integrasi form, hingga manajemen data bisa dibangun dengan cepat.
Ini sangat membantu perusahaan yang membutuhkan dashboard admin yang user-friendly untuk mempermudah pekerjaan tim internal mereka. Filament 3 juga memiliki fleksibilitas untuk disesuaikan dengan kebutuhan spesifik proyek, sehingga mempermudah developer dalam menambahkan fitur tambahan sesuai kebutuhan klien.
Spatie Laravel Permission: Package Populer untuk User Roles
Spatie Laravel Permission merupakan salah satu package terpopuler di ekosistem Laravel untuk membangun fitur manajemen peran dan izin (user roles and permissions) pada sebuah website modern.
Di dunia web development, fitur ini menjadi sangat penting untuk memastikan bahwa setiap pengguna mendapatkan hak akses yang sesuai dengan perannya. Misalnya, dalam sebuah sistem e-commerce, ada peran seperti admin, pelanggan, atau manajer toko, di mana masing-masing memiliki tingkat akses yang berbeda.
Spatie menyediakan berbagai fitur untuk memudahkan developer dalam mengelola peran dan izin ini, tanpa harus membangun semuanya dari awal. Dengan integrasi yang mulus ke dalam Laravel, Spatie Laravel Permission memungkinkan developer untuk mengatur siapa saja yang bisa mengakses halaman tertentu, mengelola produk, atau melakukan transaksi.
Paket ini sangat fleksibel dan mudah digunakan, serta dapat diandalkan untuk membangun website yang aman dan terstruktur dengan baik.
Membangun Fitur Role Management pada Website Toko Buah Online
Pada artikel ini, kita akan belajar bagaimana membuat fitur role management untuk sebuah website toko buah online. Dalam proyek ini, kita akan menggunakan kombinasi Laravel 11, Filament 3, dan Spatie Laravel Permission untuk mengelola peran pengguna. Website ini akan memiliki beberapa role, seperti:
- Admin: memiliki akses penuh untuk mengelola semua aspek di dalam website, termasuk menambah atau menghapus produk, melihat laporan penjualan, dan mengelola pengguna.
- Merchant: peran ini diberikan kepada penjual buah yang dapat menambah, mengedit, dan menghapus produk mereka sendiri, serta memantau pesanan yang masuk dari pelanggan.
- Customer: pengguna biasa yang hanya memiliki akses untuk menjelajah produk, melakukan pembelian, dan melihat status pesanan mereka.
Dengan sistem role management ini, kita dapat memastikan bahwa setiap pengguna hanya bisa mengakses fitur-fitur yang sesuai dengan hak dan tanggung jawab mereka. Hal ini penting untuk menjaga keamanan, efisiensi, dan pengalaman pengguna yang optimal pada website.
Membuat Proyek Toko Buah dengan Laravel
Berikut adalah panduan lengkap untuk membuat proyek toko buah menggunakan Laravel melalui terminal, mengatur koneksi database MySQL, serta membuat migration dan model untuk tabel products
, categories
, dan transactions
.
Install Laravel Melalui Composer
Langkah pertama adalah menginstall Laravel. Buka terminal dan jalankan perintah berikut untuk membuat proyek Laravel baru:
composer create-project --prefer-dist laravel/laravel toko-buah
Setelah instalasi selesai, masuk ke direktori proyek:
cd toko-buah
Mengatur File .env
untuk Koneksi Database MySQL
Setelah proyek Laravel berhasil dibuat, buka file .env
yang ada di root folder proyek. Ubah konfigurasi database agar sesuai dengan setup MySQL di komputer lokal:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=root
DB_PASSWORD=
Gantilah nama_database
dengan nama database yang kamu buat di MySQL. Pastikan MySQL sudah aktif dan database yang dimaksud sudah tersedia.
Membuat Migration dan Model untuk Produk (Product)
Langkah selanjutnya adalah membuat migration dan model untuk tabel produk. Jalankan perintah berikut di terminal:
php artisan make:model Product -m
Perintah di atas akan membuat model Product
beserta file migration-nya. Buka file migration yang ada di database/migrations
, lalu modifikasi fungsi up
untuk menambahkan struktur tabel products
:
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->decimal('price', 8, 2);
$table->integer('stock');
$table->unsignedBigInteger('category_id');
$table->timestamps();
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
});
}
Tabel products
akan memiliki kolom name
, price
, stock
, serta relasi category_id
yang terhubung ke tabel categories
.
Membuat Migration dan Model untuk Kategori (Category)
Buat model dan migration untuk tabel kategori menggunakan perintah berikut:
php artisan make:model Category -m
Setelah itu, buka file migration yang dihasilkan dan sesuaikan dengan struktur berikut:
public function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->timestamps();
});
}
Tabel categories
ini akan digunakan untuk mengelompokkan produk berdasarkan kategori buah.
Membuat Migration dan Model untuk Transaksi (Transactions)
Selanjutnya, buat model dan migration untuk tabel transaksi dengan perintah ini:
php artisan make:model Transaction -m
Kemudian, modifikasi file migration untuk tabel transactions
seperti berikut:
public function up()
{
Schema::create('transactions', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('product_id');
$table->integer('quantity');
$table->decimal('total_price', 8, 2);
$table->timestamps();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
});
}
Tabel transactions
akan menyimpan informasi tentang produk yang dibeli dan jumlah pembelian (quantity
), serta total harga (total_price
).
Menjalankan Migration
Setelah semua migration telah dibuat dan dimodifikasi, jalankan perintah berikut untuk membuat tabel di database:
php artisan migrate
Perintah ini akan membuat tabel products
, categories
, dan transactions
di database yang sudah terhubung melalui file .env
.
Cara Menginstall dan Menggunakan Package Spatie Permission di Laravel
Berikut adalah langkah-langkah untuk menginstall package Spatie Laravel Permission dalam proyek Laravel, lengkap dengan contoh koding.
Install Package Spatie Laravel Permission
Buka terminal, pastikan kamu berada di dalam direktori proyek Laravel, lalu jalankan perintah berikut untuk menginstall package Spatie Laravel Permission:
composer require spatie/laravel-permission
Setelah package berhasil diinstall, kamu perlu meng-publish file konfigurasi dan migration-nya dengan menjalankan perintah ini:
php artisan vendor:publish --provider="Spatie\\\\Permission\\\\PermissionServiceProvider"
Perintah ini akan menghasilkan file konfigurasi permission.php
di direktori config
dan file migration untuk tabel roles
, permissions
, dan tabel pivot untuk menghubungkan pengguna dengan role dan permission.
Jalankan Migration
Setelah mem-publish file konfigurasi, jalankan perintah berikut untuk membuat tabel yang diperlukan oleh Spatie di database:
php artisan migrate
Ini akan membuat tabel roles
, permissions
, dan tabel pivot seperti model_has_roles
, model_has_permissions
, dan role_has_permissions
di database.
Setup Model User
Buka file User.php
di direktori app/Models
. Tambahkan trait HasRoles
dari Spatie ke dalam model User
agar pengguna dapat diberikan role dan permission. Berikut adalah contohnya:
namespace App\\\\Models;
use Illuminate\\\\Foundation\\\\Auth\\\\User as Authenticatable;
use Spatie\\\\Permission\\\\Traits\\\\HasRoles;
class User extends Authenticatable
{
use HasRoles;
// kode lainnya
}
Dengan menambahkan trait HasRoles
, kamu bisa mulai memberikan role dan permission kepada pengguna.
Cara Menginstall Package Filament dan Membuat Filament Resource untuk Category, Product, User, Role, dan Permission
Berikut ini adalah langkah-langkah lengkap untuk menginstall package Filament di proyek Laravel dan membuat resource admin untuk mengelola Category
, Product
, User
, Role
, dan Permission
dengan Filament.
Install Package Filament
Untuk menginstall Filament, pastikan kamu sudah berada di dalam folder proyek Laravel di terminal. Jalankan perintah berikut untuk menginstall package Filament:
composer require filament/filament
Setelah package berhasil diinstall, jalankan perintah berikut untuk mem-publish aset dan konfigurasi Filament:
php artisan filament:install
Perintah ini akan mengatur konfigurasi awal Filament dan membuat dashboard admin yang bisa langsung diakses.
Jalankan Migration
Jika proses instalasi Filament sudah selesai, pastikan kamu menjalankan migration agar tabel-tabel yang dibutuhkan oleh Filament dapat terbentuk:
php artisan migrate
Membuat Filament Resource untuk Category
Untuk membuat resource Category
di Filament, gunakan perintah berikut di terminal:
php artisan make:filament-resource Category
Ini akan menghasilkan resource CategoryResource
yang terletak di folder app/Filament/Resources/CategoryResource.php
. Di file ini, kamu dapat menyesuaikan form dan tabel untuk pengelolaan data kategori.
Contoh sederhana dari form dan tabel untuk Category
bisa seperti ini:
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('name')->required(),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('name'),
TextColumn::make('created_at')->dateTime(),
])
->filters([]);
}
Membuat Filament Resource untuk Product
Untuk membuat resource Product
, jalankan perintah ini di terminal:
php artisan make:filament-resource Product
Setelah resource Product
dibuat, kamu bisa menyesuaikan form dan tabel di file ProductResource.php
. Misalnya:
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('name')->required(),
TextInput::make('price')->numeric()->required(),
Select::make('category_id')
->relationship('category', 'name')->required(),
TextInput::make('stock')->numeric()->required(),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('name'),
TextColumn::make('price')->money('USD'),
TextColumn::make('stock'),
TextColumn::make('category.name')->label('Category'),
TextColumn::make('created_at')->dateTime(),
])
->filters([]);
}
Membuat Filament Resource untuk User
Untuk membuat resource User
, jalankan perintah berikut:
php artisan make:filament-resource User
Sesuaikan form dan tabel di UserResource.php
. Contoh implementasi form dan tabel untuk User
:
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('name')->required(),
TextInput::make('email')->email()->required(),
PasswordInput::make('password')->required(),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('name'),
TextColumn::make('email'),
TextColumn::make('created_at')->dateTime(),
])
->filters([]);
}
Membuat Filament Resource untuk Role
Jika kamu menggunakan package Spatie untuk role management, berikut cara membuat resource Role
:
php artisan make:filament-resource Role
Di dalam RoleResource.php
, sesuaikan form dan tabel untuk mengelola role. Misalnya:
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('name')->required(),
MultiSelect::make('permissions')
->relationship('permissions', 'name'),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('name'),
TextColumn::make('permissions.name')->label('Permissions')->limit(3),
])
->filters([]);
}
Membuat Filament Resource untuk Permission
Untuk resource Permission
, jalankan perintah:
php artisan make:filament-resource Permission
Di dalam file PermissionResource.php
, kamu bisa menyesuaikan form dan tabelnya sebagai berikut:
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('name')->required(),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('name'),
TextColumn::make('created_at')->dateTime(),
])
->filters([]);
}
Dengan mengikuti langkah-langkah di atas, kamu telah berhasil menginstall package Filament dan membuat resource untuk Category
, Product
, User
, Role
, dan Permission
. Filament memudahkan pembuatan panel admin yang interaktif, lengkap dengan pengelolaan role dan permission menggunakan Spatie, sehingga pengembangan menjadi lebih cepat dan terstruktur.
Membatasi Akses Dashboard Filament Hanya untuk User dengan Role Admin
Setelah menambahkan Filament resource untuk Role
dan memastikan role Admin
sudah ada di database, kita akan memodifikasi model User
agar hanya pengguna dengan role Admin
yang dapat mengakses dashboard Filament. Untuk ini, kita akan menggunakan method canAccessPanel
.
Pastikan Trait HasRoles
Sudah Ditambahkan di Model User
Buka file app/Models/User.php
dan tambahkan trait HasRoles
dari Spatie Laravel Permission untuk mendukung fitur role management. Ini memungkinkan kita menggunakan method seperti hasRole
untuk memeriksa apakah pengguna memiliki role tertentu.
namespace App\\\\Models;
use Illuminate\\\\Foundation\\\\Auth\\\\User as Authenticatable;
use Spatie\\\\Permission\\\\Traits\\\\HasRoles;
class User extends Authenticatable
{
use HasRoles;
// Kode lainnya
}
Tambahkan Method canAccessPanel
di Model User
Filament akan memeriksa method canAccessPanel
untuk menentukan apakah seorang pengguna memiliki akses ke dashboard. Tambahkan method ini di dalam model User
untuk memverifikasi apakah pengguna memiliki role Admin
.
Buka file app/Models/User.php
dan tambahkan method canAccessPanel
berikut:
public function canAccessPanel(): bool
{
return $this->hasRole('Admin');
}
Method canAccessPanel
akan mengembalikan true
hanya jika pengguna memiliki role Admin
. Dengan begitu, hanya pengguna dengan role Admin
yang akan diizinkan untuk mengakses dashboard Filament.
Cara Menguji Konfigurasi
Pastikan role Admin
sudah ada di database. Jika belum, tambahkan role ini menggunakan Filament dashboard atau melalui Tinker:
php artisan tinker
use App\\\\Models\\\\User;
use Spatie\\\\Permission\\\\Models\\\\Role;
Role::firstOrCreate(['name' => 'Admin']);
$user = User::find(1); // Sesuaikan dengan ID user yang ingin diberi akses
$user->assignRole('Admin');
Login ke dashboard Filament menggunakan akun pengguna yang memiliki role Admin
. Jika konfigurasi canAccessPanel
sudah benar, hanya user dengan role Admin
yang dapat mengakses dashboard, sementara pengguna lain akan ditolak aksesnya.
Dengan konfigurasi ini, akses ke dashboard Filament sekarang terbatas hanya untuk pengguna yang memiliki role Admin
.
Menambahkan Role Merchant
dan Customer
serta Beberapa Permission pada Proyek dengan Filament Resource
Setelah sebelumnya menambahkan role Admin
, kita akan menambahkan role Merchant
dan Customer
, serta beberapa permission yang relevan dengan proyek ini menggunakan Filament Resource. Dengan konfigurasi ini, kita dapat mengelola role dan permission dari dashboard Filament.
Tambahkan Role Merchant
dan Customer
melalui Filament
Pastikan RoleResource
sudah dibuat dengan Filament. Untuk menambahkan role Merchant
dan Customer
, buka dashboard Filament di URL yang telah dikonfigurasi (biasanya /admin
).
Pada dashboard Filament:
- Masuk ke menu Roles yang disediakan oleh
RoleResource
. - Klik tombol Create atau Add Role.
- Tambahkan role
Merchant
dengan mengisi nama role dan menyimpannya. - Ulangi langkah yang sama untuk menambahkan role
Customer
.
Tambahkan Permission Baru melalui Filament
Jika sudah ada PermissionResource
, kita bisa menambahkan permission yang dibutuhkan untuk setiap role.
Pada dashboard Filament:
- Akses menu Permissions dari
PermissionResource
. - Klik Create atau Add Permission untuk membuat permission baru.
- Tambahkan permission yang sesuai, seperti
view products
,manage own products
,purchase products
, danview orders
. - Setelah menambahkan permission, klik Save.
Mengatur Permission untuk Role Merchant
dan Customer
Setelah menambahkan role dan permission, kita bisa menetapkan permission yang sesuai untuk setiap role. Sebagai contoh:
Merchant
memiliki izin sepertiview products
danmanage own products
.Customer
memiliki izinview products
danpurchase products
.
Pada dashboard Filament:
- Masuk ke menu Roles.
- Pilih role
Merchant
dan atur permissions-nya, sepertiview products
danmanage own products
. - Simpan perubahan.
- Pilih role
Customer
dan tetapkan permissionsview products
danpurchase products
. - Simpan perubahan.
Menambahkan Role Merchant
dan Customer
serta Permissions Menggunakan Seeder (Opsional)
Jika kamu ingin menambahkan role dan permission ini secara programatis, kamu bisa menggunakan seeder. Buat seeder RolePermissionSeeder
jika belum ada:
php artisan make:seeder RolePermissionSeeder
Buka file database/seeders/RolePermissionSeeder.php
dan tambahkan kode berikut untuk membuat role Merchant
dan Customer
serta permissions:
namespace Database\\\\Seeders;
use Illuminate\\\\Database\\\\Seeder;
use Spatie\\\\Permission\\\\Models\\\\Role;
use Spatie\\\\Permission\\\\Models\\\\Permission;
class RolePermissionSeeder extends Seeder
{
public function run()
{
// Buat permissions
$permissions = [
'view products',
'manage own products',
'purchase products',
'view orders',
];
foreach ($permissions as $permission) {
Permission::firstOrCreate(['name' => $permission]);
}
// Buat roles dan tetapkan permissions
$adminRole = Role::firstOrCreate(['name' => 'Admin']);
$merchantRole = Role::firstOrCreate(['name' => 'Merchant']);
$customerRole = Role::firstOrCreate(['name' => 'Customer']);
// Admin memiliki semua permissions
$adminRole->syncPermissions(Permission::all());
// Merchant memiliki permission tertentu
$merchantRole->syncPermissions([
'view products',
'manage own products',
'view orders',
]);
// Customer memiliki permission tertentu
$customerRole->syncPermissions([
'view products',
'purchase products',
]);
}
}
Setelah menambahkan kode ini, jalankan seeder untuk membuat role dan permission secara otomatis di database:
php artisan db:seed --class=RolePermissionSeeder
Cara Membuat 10 Route Utama pada Proyek Toko Buah dan Melindungi dengan Role dan Permission
Dalam proyek toko buah, kita akan membuat 10 route utama yang akan dilindungi menggunakan role dan permission yang telah ditambahkan sebelumnya. Role seperti Admin
, Merchant
, dan Customer
akan memiliki akses terbatas sesuai dengan permission yang telah diatur. Di Laravel, middleware digunakan untuk memastikan hanya pengguna dengan role dan permission tertentu yang bisa mengakses route yang sudah ditentukan.
Route untuk Menampilkan Produk (Dapat Diakses oleh Semua Role)
Route ini digunakan untuk menampilkan daftar produk yang tersedia di toko. Role Admin
, Merchant
, dan Customer
semuanya bisa mengakses halaman ini karena permission view products
diberikan kepada semua role.
Route::get('/products', function () {
// Logic untuk menampilkan semua produk
})->middleware('permission:view products');
Route untuk Menambah Produk (Hanya untuk Merchant dan Admin)
Pada halaman ini, pengguna dengan role Admin
dan Merchant
dapat menambahkan produk baru ke toko. Hanya pengguna dengan role ini dan permission manage own products
yang dapat mengakses halaman ini.
Route::get('/products/create', function () {
// Logic untuk menampilkan form tambah produk
})->middleware(['role:Admin|Merchant', 'permission:manage own products']);
Route untuk Menyimpan Produk Baru (Hanya untuk Merchant dan Admin)
Route ini digunakan untuk menyimpan produk baru yang telah ditambahkan oleh Admin
atau Merchant
. Setelah mengisi form pada halaman sebelumnya, data produk akan disimpan melalui route ini.
Route::post('/products', function () {
// Logic untuk menyimpan produk baru
})->middleware(['role:Admin|Merchant', 'permission:manage own products']);
Route untuk Mengedit Produk (Hanya untuk Merchant dan Admin)
Route ini mengizinkan pengguna dengan role Merchant
dan Admin
untuk mengedit produk yang ada. Hanya produk yang ditambahkan oleh mereka yang dapat diedit (untuk Merchant
), atau semua produk (untuk Admin
).
Route::get('/products/{id}/edit', function ($id) {
// Logic untuk menampilkan form edit produk
})->middleware(['role:Admin|Merchant', 'permission:manage own products']);
Route untuk Memperbarui Produk (Hanya untuk Merchant dan Admin)
Setelah melakukan perubahan pada produk, route ini digunakan untuk memperbarui data produk di database. Hanya Merchant
dan Admin
yang memiliki akses untuk memperbarui produk.
Route::put('/products/{id}', function ($id) {
// Logic untuk memperbarui data produk
})->middleware(['role:Admin|Merchant', 'permission:manage own products']);
Route untuk Menghapus Produk (Hanya untuk Admin)
Hanya pengguna dengan role Admin
yang diizinkan untuk menghapus produk dari toko. Permission delete products
dibutuhkan untuk melakukan tindakan ini.
Route::delete('/products/{id}', function ($id) {
// Logic untuk menghapus produk
})->middleware(['role:Admin', 'permission:delete products']);
Route untuk Menampilkan Daftar Pesanan (Hanya untuk Admin dan Merchant)
Route ini digunakan untuk menampilkan daftar semua pesanan yang ada di sistem. Baik Admin
maupun Merchant
dapat melihat daftar pesanan, namun role Customer
tidak memiliki akses.
Route::get('/orders', function () {
// Logic untuk menampilkan semua pesanan
})->middleware(['role:Admin|Merchant', 'permission:view orders']);
Route untuk Membuat Pesanan Baru (Hanya untuk Customer)
Route ini digunakan oleh Customer
untuk membuat pesanan baru. Setelah memilih produk, Customer
akan diarahkan ke route ini untuk menyelesaikan pesanan mereka.
Route::post('/orders', function () {
// Logic untuk membuat pesanan baru
})->middleware(['role:Customer', 'permission:purchase products']);
Route untuk Menampilkan Detail Pesanan (Hanya untuk Customer dan Merchant)
Customer
dan Merchant
dapat melihat detail dari pesanan tertentu. Merchant
hanya bisa melihat pesanan yang terkait dengan produk yang mereka kelola, sementara Customer
bisa melihat pesanan mereka sendiri.
Route::get('/orders/{id}', function ($id) {
// Logic untuk menampilkan detail pesanan
})->middleware(['role:Customer|Merchant', 'permission:view orders']);
Route untuk Mengelola Pengguna (Hanya untuk Admin)
Hanya Admin
yang memiliki akses untuk mengelola data pengguna lain di dalam sistem. Mereka dapat melihat daftar pengguna dan mengelola hak akses mereka.
Route::get('/users', function () {
// Logic untuk menampilkan daftar pengguna
})->middleware(['role:Admin', 'permission:manage users']);
Dengaan menggunakan middleware role
dan permission
, kita dapat mengamankan setiap route dalam aplikasi toko buah sesuai dengan hak akses yang diberikan kepada setiap pengguna. Pendekatan ini memungkinkan pembatasan akses yang terstruktur, memaastikan bahwa pengguna hanya bisa melakukan tindakan yang sesuai dengan role dan permission mereka.
Penutup
Laravel terus berkembang dan semakin populer berkat pembaruan-pembaruan menarik yang memudahkan developer dalam membangun aplikasi web yang kuat dan scalable. Fitur-fitur baru yang hadir secara berkala membuat Laravel tetap relevan dan menjadi pilihan utama bagi banyak developer di seluruh dunia.
Untuk tetap mendapatkan ilmu terkini dan memaksimalkan kemampuan dalam menggunakan Laravel, pantau terus website BuildWithAngga. Di sana, kamu bisa menemukan banyak kelas gratis yang mencakup studi kasus menarik dan diajarkan oleh mentor berpengalaman. Selain itu, BuildWithAngga menawarkan akses seumur hidup, memungkinkan kamu untuk belajar kapan saja dan memastikan kamu selalu siap menghadapi tantangan baru di dunia web development.