Bangun sistem autentikasi login/logout session, proteksi route dengan Filter Auth Guard, dan buat Custom Helper format angka & tanggal.
Daftar Isi
Terakhir diperbarui:
In a nutshell: "Bab 5 memandu pembuatan sistem Autentikasi Session, Filter Route Guard untuk memproteksi halaman rahasia, serta pembuatan Custom Helper format mata uang dan tanggal."
Direct Answer: Fitur Filter di CI4 bertindak sebagai middleware yang mencegat request sebelum sampai ke Controller (before()) atau sesudah response selesai diproses (after()), menjadikannya tempat ideal untuk memverifikasi status login user secara global.
Membuat Route Filter Auth Guard
Jalankan perintah pembuatan Filter:
php spark make:filter AuthFilter
Isi file di app/Filters/AuthFilter.php:
<?php
namespace App\Filters;
use CodeIgniter\Filters\FilterInterface;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
class AuthFilter implements FilterInterface
{
public function before(RequestInterface $request, $arguments = null)
{
if (!session()->get('isLoggedIn')) {
session()->setFlashdata('error', 'Silakan login terlebih dahulu untuk mengakses halaman ini!');
return redirect()->to('/login');
}
}
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
// Eksekusi setelah response siap jika diperlukan
}
}
Daftarkan alias filter di app/Config/Filters.php dan pasang pada Route:
// Di app/Config/Routes.php
$routes->group('barang', ['filter' => 'auth'], function($routes) {
$routes->get('/', 'Barang::index');
$routes->get('tambah', 'Barang::tambah');
$routes->post('simpan', 'Barang::simpan');
});
Membuat Custom Helper Sendiri (app/Helpers/app_helper.php)
<?php
if (!function_exists('format_rupiah')) {
function format_rupiah(float|int $angka): string
{
return 'Rp ' . number_format($angka, 0, ',', '.');
}
}
if (!function_exists('format_tanggal_indo')) {
function format_tanggal_indo(string $datetime): string
{
$bulan = [
1 => 'Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni',
'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'
];
$time = strtotime($datetime);
return date('d', $time) . ' ' . $bulan[(int)date('m', $time)] . ' ' . date('Y H:i', $time);
}
}
Tips Pro Autoload Helper:
Tambahkan 'app' ke dalam array $helpers pada file app/Controllers/BaseController.php agar fungsi format rupiah dan tanggal dapat dipanggil di semua Controller dan View secara otomatis.