
Pada dasarnya, Laravel memiliki fitur yang bisa membantu kita memisahkan route berdasarkan role user. Hal ini sangat berguna untuk menjalankan aplikasi web dengan lebih efisien dan aman. Oleh karena itu, pada kesempatan kali ini kita akan membahas tentang bagaimana memaksimalkan fitur Laravel dengan pembagian route berdasarkan role user.
Untuk membantu kita dalam membuat pembagian route berdasarkan role user, kita bisa menggunakan library Laravel Permission dari Spatie. Library ini memudahkan kita untuk mengatur role dan permission dalam aplikasi web yang kita buat.
Langkah-langkah
Berikut adalah cara mengimplementasikan Laravel Permission dalam aplikasi web kita:
-
Pastikan kita sudah menginstall Laravel Permission dengan mengikuti langkah-langkah yang ada di dokumentasi resmi Laravel Permission.
-
Setelah itu, kita bisa mengaktifkan middleware yang disediakan oleh Laravel Permission dengan menambahkan kode berikut pada file
app/Http/Kernel.php
:
protected $routeMiddleware = [
...
'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
];
- Selanjutnya, kita bisa membuat role sesuai dengan kebutuhan. Agar lebih mudah, kita dapat membuatnya melalui Database Seeder. Berikut adalah contoh kode untuk membuat role dan permission:
- Buat file
database/seeders/RolesSeeder.php
:
php artisan make:seeder RolesSeeder
- Kemudian, isi file
database/seeders/RolesSeeder.php
dengan kode berikut:
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
class RolesSeeder extends Seeder
{
public function run()
{
// Reset cached roles and permissions
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
// create roles and assign existing permissions
Role::create(['name' => 'writer']);
Role::create(['name' => 'admin']);
Role::create(['name' => 'super-admin']);
}
}
- Jalankan perintah berikut untuk menjalankan seeder:
php artisan db:seed --class=RolesSeeder
- Setelah itu, kita bisa membuat route yang akan dibagi berdasarkan role user. Untuk membuat route yang dibagi berdasarkan role user, kita bisa menambahkan kode berikut pada file
app/Porviders/RouteServiceProvider.php
:
public function boot(): void
{
$this->configureRateLimiting();
$this->routes(function () {
...
Route::middleware('role:super-admin')
->prefix('super-admin')
->group(base_path('routes/super-admin.php'));
Route::middleware('role:admin')
->prefix('admin')
->group(base_path('routes/admin.php'));
Route::middleware('role:writer')
->prefix('writer')
->group(base_path('routes/writer.php'));
}
}
- Selanjutnya, kita bisa membuat route yang akan dibagi berdasarkan role user. Berikut adalah contoh kode untuk membuat route yang dibagi berdasarkan role user:
- File
routes/super-admin.php
:
Route::get('/', function () {
return 'Super Admin';
});
- File
routes/admin.php
:
Route::get('/', function () {
return 'Admin';
});
- File
routes/writer.php
:
Route::get('/', function () {
return 'Writer';
});
Kemudian, kita bisa mengakses route tersebut dengan mengakses URL berikut:
-
http://example.test/super-admin
-
http://example.test/admin
-
http://example.test/writer
Kesimpulan
Dengan menggunakan Laravel Permission, kita bisa memaksimalkan fitur Laravel dengan pembagian route berdasarkan role user. Hal ini sangat berguna untuk menjalankan aplikasi web dengan lebih efisien dan aman.