Membuat Fitur Middleware Menggunakan Filters Pada CodeIgniter 4

Membuat Fitur Middleware Menggunakan Filters Pada CodeIgniter 4

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.

Membuat Filters

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.

 

Registrasi Filters

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,
..

 

Menambahkan Middleware ke Route

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.