Belajar Konsep, Kegunaan, dan Cara Menggunakan Middleware di Laravel

Posted on Posted in Artikel, Laravel

Middleware, seperti namanya yaitu ‘middle’ yang berarti ‘tengah’, adalah program ‘penengah’. Middleware berfungsi sebagai penengah antara request dan response, sehingga setiap request akan melewati middleware terlebih dahulu sebelum mendapatkan response.

Biasanya middleware berisi informasi tentang siapa saja yang diperbolehkan mengakses sebuah request, karena letak middleware yang terletak sebelum response, sehingga memungkinkan middleware untuk melanjutkan sebuah request atau mengalihkan request tersebut.

Oke, langsung saja ke praktek, pertama anggap saja kita punya table user seperti ini:

$table->increments(‘id’);

$table->string(‘name’);

$table->enum(‘role’,[‘admin’,’subscriber’])->default(‘subscriber’);

$table->string(’email’)->unique();

$table->string(‘password’);

$table->rememberToken();

$table->timestamps();

Lalu kita buat 2 user, yang pertama dengan role admin, dan yang kedua dengan role subscriber.

Oke, setelah mempunyai 2 user, kita buat route untuk memahami konsep middleware, anggap saja seperti ini:

Route::get(‘user/admin’,function (){

return “this route for Admin”;

});

Route::get(‘user/subscriber’,function (){

return “this route for Subscriber”;

},);

Nah, coba masuk ke kedua url diatas, dan pastikan anda sudah login terlebih dahulu, gunakan halaman login default dari laravel jika anda belum membuat halaman login.

Kedua user baik admin maupun subscriber masih bisa mengakses halaman tersebut, karena kita belum men-setting middleware, mari kita setting middleware kita.

Sebenarnya ada banyak cara untuk men-setting middleware dilaravel, tapi kita harus memahami dulu bagaimana cara kerja middleware, sebagai permulaan coba buka file Kernel.php di direktori Http.

protected $routeMiddleware = [

‘auth’ => \App\Http\Middleware\Authenticate::class,

‘auth.basic’ => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,

‘can’ => \Illuminate\Foundation\Http\Middleware\Authorize::class,

‘guest’ => \App\Http\Middleware\RedirectIfAuthenticated::class,

‘throttle’ => \Illuminate\Routing\Middleware\ThrottleRequests::class,

];

Akan ada kode seperti itu pada Kernel.php, kode ini berisi semua middleware yang sudah terdaftar, itu adalah middleware default dari laravel, ketika kita ingin menambah middleware maka kita akan menambahnya didalam kode ini.

Oke, mari kita buat middleware khusus untuk Admin, masuk ke terminal dan ketikkan perintah berikut di direktori project anda

php artisan make:middleware AdminMiddleware

Laravel akan membuatkan file middleware kita secara otomatis, Lalu sekarang kita harus mendaftarkan middleware kita, buka Kernel.php dan tambahkan kode berikut didalam properti $routeMiddleware

‘admin’ => \App\Http\Middleware\AdminMiddleware::class,

Nah, sekarang kita edit kode pada AdminMiddleware.php, buka file tersebut maka isinya kuarang lebih akan seperti ini :

public function handle($request, Closure $next){

return $next($request);

}

perhatikan baris return $next($request);, setiap middleware harus memiliki return seperti itu, karena jika tidak ada baris tersebut, maka request tidak akan dilanjutkan, jadi jangan hapus baris tersebut.

AdminMiddleware adalah Middleware khusus admin, jadi kita harus membuat kondisi seperti ini : jika user yang masuk bukan admin, Maka request tersebut akan dihentikan atau dialihkan, Mari kita tuliskan logika tersebut kedalam kode kita

$user = \Auth::user();

//mengambil data user saat ini

if($user->role != “admin”){

return redirect(‘/403’);

//mengalihkan user yang bukan admin ke halaman 403

}

return $next($request);

Mari kita tes dengan route admin, tambahkan kode ini diroute admin :

Route::get(‘user/admin’,function (){

return “this route for Admin”;

})->middleware(‘admin’);

Lalu coba tes menggunakan kedua akun user yang sudah dibuat tadi, jika kita menggunakan user subscriber, dan kita dialihkan ke 403, berarti kode kita berhasil.

Sekarang cobalah buat middleware untuk subscriber sendiri, Semoga Berhasil!!!

Sebenernya masih banyak cara untuk medeklarasikan middleware, untuk selengkapnya bisa dilihat di Dokumentasi resmi laravel di link berikut : Middleware – Laravel – The PHP Framework For Web Artisans

Sekian. 🙂