Middlewares

Os middlewares fornecem um mecanismo conveniente para validar requisições em rotas específicas. A definição na rota é tão simples quanto criar o middleware:

$router->get('/', [
    'middlewares' => [ 'maintenance' ],
    function($request, $response) {
        // ...
    }
]);

O middleware deve ser criado em /app/Middlewares:

namespace App\Middlewares;

use \App\Common\Environment as Env;

class Maintenance {
    public function handle($request, $response, $next) {
        if(Env::get('MAINTENANCE') == 'true')
            return $response->send(200, "Em manutenção");

        return $next($request, $response);
    }
}

O retorno de um Middleware sempre deve ser com $next($request, $response) para prosseguir com a fila.

Após criar o middleware é necessário defini-lo com um apelido para que possa utiliza-lo na definição da rota, conforme o exemplo acima. O middleware pode ser definido no arquivo /middlewares.php:

use \App\Http\Middleware;

Middleware::setMap([
    'maintenance' => \App\Middlewares\Maintenance::class
]);

É possível definir middlewares padrões que serão executados em todas as rotas criadas, isso permite que um middleware importante seja adicionado automaticamente sem que seja necessário declarar a cada criação de rota:

use \App\Http\Middleware;

Middleware::setMap([
    'maintenance' => \App\Middlewares\Maintenance::class
]);

Middleware::setDefault([
    'maintenance'
]);

Para definir um middleware padrão é necessário citar apenas o apelido definido no ::setMap().

Last updated