DEV Community

Cover image for Menggunakan Filters Di Codeigniter 4 Sebagai Middleware
MedanInCode
MedanInCode

Posted on • Originally published at medanincode.com

Menggunakan Filters Di Codeigniter 4 Sebagai Middleware

Tutorial kali ini akan membahas penggunaan Filters sebagai middleware di Codeigniter 4.

Apa itu Middleware?

Middleware di dunia pemrograman web adalah software layer yang menghubungkan antara request dengan controller.Hal paling umum adalah authentication.Selain itu juga bisa digunakan untuk beberapa hal seperti :

  1. Authorization
  2. Validasi dan Sanitasi Input
  3. Logger
  4. CSRF
  5. Dan Lain-lain

Middleware membuat kode kita lebih clean , reusable, maintainable dan readable.Karena membuat controller hanya akan fokus dalam proses alur bisnis tanpa harus melakukan hal-hal lain seperti validasi login,input dan lain-lain.Umumnya middleware dipasang di router terutama untuk framework yang menganut sistem MVC seperti Codeigniter 4,tapi tidak selalu begitu tergantung aturan framework masing-masing.

Menggunakan Filters sebagai Middleware

Sebagai contoh kita akan membuat middleware sederhana Authentication di Codeigniter 4 untuk mengcheck apakah user sudah login.

Membuat Filters

Pertama buat Filters baru di app\Filters bernama AuthFilter.php,lalu isi dengan kode dibawah.

<?php namespace App\Filters;

use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;

class AuthFilter implements FilterInterface
{
    public function before(RequestInterface $request)
    {
        if (!session()->islogin)
        {
            echo "invalid";
            return redirect()->to(base_url('/auth'))->with('error', "Invalid Credential");
        }
        // Do something here
    }

    //--------------------------------------------------------------------

    public function after(RequestInterface $request, ResponseInterface $response)
    {
        // Do something here
    }
}
Enter fullscreen mode Exit fullscreen mode

Bisa dilihat pada kode diatas kita menambahkan kode di fungsi before jadi dijalankan sebelum masuk ke controller.Fungsinya sangat sederhana hanya mengcheck apakah session()->isLogin ,jika tidak ada akan redirect ke halaman login dengan memberikan pesan Invalid Credential.

Menambahkan Filters ke Config

Tahap selanjutnya adalah menambahkan AuthFilter yang sudah dibuat ke dalam Config agar bisa digunakan.Buka File Filters.php di folder app\Config.

Tambahkan Filters yang dibuat tadi sehingga menjadi seperti dibawah ini.

<?php namespace Config;

use CodeIgniter\Config\BaseConfig;

class Filters extends BaseConfig
{
    // Makes reading things below nicer,
    // and simpler to change out script that's used.
    public $aliases = [
        'csrf'     => \CodeIgniter\Filters\CSRF::class,
        'toolbar'  => \CodeIgniter\Filters\DebugToolbar::class,
        'honeypot' => \CodeIgniter\Filters\Honeypot::class,
        'authfilter' => \App\Filters\AuthFilter::class
    ];
Enter fullscreen mode Exit fullscreen mode

Kita beri nama authfilter agar mudah dipanggil.

Menggunakan Filters di Router

Untuk menggunakan Filters buka file Routes.php di folder app\Config.

Untuk penggunaan router group ubah menjadi kode dibawah ini.

<?php
//skill
$routes->group('skill', ['filter' => 'authfilter'], function($routes) {
    $routes->get('/', 'Skill::index');
    $routes->get('add', 'Skill::add');
    $routes->post('add', 'Skill::store');
});
Enter fullscreen mode Exit fullscreen mode

Jadi setiap kali route skill dipanggil akan mengcheck apakah sudah login atau tidak.

Untuk penggunaan router bisa.

<?php
$routes->get('/dashboard', 'Home::index', ['filter' => 'authfilter']);
Enter fullscreen mode Exit fullscreen mode

Sekian tutorial kali ini ,jika ada yang kurang paham bisa ditanyakan jangan dipendam.

Top comments (0)