Sobatcoding.com - Tutorial Membuat Middleware Menggunakan Filters Pada CodeIgniter 4
Pada artikel kali ini kita akan mencoba belajar membuat fitur middleware seperti pada framework Laravel menggunakan Filters pada CodeIgniter 4.
Middleware ini berfungsi untuk memvalidasi apakah user bisa mengakses suatu halaman berdasarkan kriteria tertentu dengan penulisan kode yang sama.
Untuk tutorial kali ini kita akan mencoba membuat middleware untuk validasi atau penegcekan terhadap user yang telah login.
Sebelumnya kita telah belajar membuat form login di artikel sebelumnya. Jika kalian belum membacanya bisa kalian baca terlebih dahulu di link berikut
Baca : CodeIgniter 4 Tutorial Sederhana Membuat Form Login dan Logout
Kita langsung saja buat step by stepnya.
Kita buat sebuah filter bernama LoginFilter atau nama lain sesuai yang kalian inginkan menggunakan spark dengan comman line seperti berikut
php spark make:filter LoginFilter
Kemudian kita masukkan kode seperti berikut.
public function before(RequestInterface $request, $arguments = null)
{
// jika user belum login
if(! session()->get('islogin')){
// maka redirct ke halaman login
return redirect()->to('/login');
}
}
Pada fitur Filters terdapat dua function yaiut before() dan after(), kali ini kita kan menggunakan function before() untuk mencegah user yang belum login atau memiliki session login untuk mengakses halaman home.
Selanjutnya kita akan registrasi filter yang telah kita buat ke file Filters.php yang terdapat pada Folder app/Config, kemudian tambahkan kode berikut:
...
'auth' => App\Filters\LoginFilter::class,
..
Tambahkan middleware yang telah kita registrasikan ke dalam route yang kita inginkan seperti berikut
$routes->get('/home', 'DashboardController::index', ['filter' => 'auth']);
Pada contoh di atas berarti user yang tidak memiliki session tidak bisa mengakses halaman home.
Untuk filter pada beberapa route sekaligus kita bisa menggunakan fitur group seperti pada contoh berikut ini.
$routes->group("admin", ["filter" => "auth"], function($routes){
$routes->get('/users', 'UserController::index');
$routes->get('/users/(:num)', 'UserController::show');
}
Sekian tutorial kali ini. Jika teman-teman memiliki pertanyaan atau saran mengenai artikel ini, jangan ragu untuk meninggalkan komentar pada form di bawah ini.
Semoga bermanfaat.
Komentar 0