Study
CakePHP

Middleware di CakePHP

Penjelasan

CakePHP versi modern memakai middleware standar PSR-15 (sama seperti banyak framework PHP modern lainnya) — class yang mengimplementasikan MiddlewareInterface, didaftarkan di src/Application.php lewat method middleware().

Contoh Konsep

<?php

namespace App\Middleware;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Cake\Http\Response;

class CekUmurMiddleware implements MiddlewareInterface
{
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        if ((int) $request->getQuery('umur') < 18) {
            return (new Response())->withStatus(403)->withStringBody('Akses ditolak, umur minimal 18 tahun');
        }

        return $handler->handle($request); // lanjut ke middleware berikutnya / controller
    }
}

// src/Application.php
public function middleware($middlewareQueue): $middlewareQueue
{
    $middlewareQueue->add(new \App\Middleware\CekUmurMiddleware());
    return $middlewareQueue;
}

Praktikum

Buat middleware CekJamKerjaMiddleware yang menolak akses (status 403) kalau jam sekarang (date('H')) di luar rentang 08-17 di method process(), dan meneruskan request kalau masih dalam jam kerja.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Sama seperti middleware Laravel, JANGAN lupa memanggil $handler->handle($request) dan mengembalikan hasilnya di akhir kalau request boleh lanjut — kalau lupa, request akan "berhenti" di situ dan controller tujuannya tidak pernah dijalankan.