Buatin Website Blog

Memaksimalkan Fitur Laravel dengan Pembagian Route Berdasarkan Role User

Published 1 year ago Comment
Memaksimalkan Fitur Laravel dengan Pembagian Route Berdasarkan Role User

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:

  1. Pastikan kita sudah menginstall Laravel Permission dengan mengikuti langkah-langkah yang ada di dokumentasi resmi Laravel Permission.

  2. 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,
];
  1. 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']);
    }
}
  1. Jalankan perintah berikut untuk menjalankan seeder:
php artisan db:seed --class=RolesSeeder
  1. 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'));
    }
}
  1. 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.

Referensi