Definir middlewares de Laravel dentro de un paquete de composer.

Últimamente he estado trabajando en crear paquetes para composer para ser usados con Laravel y me encontré con la necesidad de agregar varios middlewares a otros grupos de middlewares. Redundante lo sé pero espero que con el ejemplo que te voy a dar puedas entender mejor 🤣

Ok, entonces qué es un grupo de middleware? La respuesta es sencilla, si vas al archivo app/Http/Kernel.php ahí vas a poder encontrar un arreglo llamado $middlewareGroups que incluye las claves "web" y "api".

Entendiendo ya los grupos de middleware ahora pasaré a explicar como agregar un middleware desde el service provider de un paquete.

Es tan sencillo como hacer lo siguiente:

1<?php
2 
3namespace MyPackage\Namespace;
4 
5use MyPackage\Http\Middleware\CustomMiddleware;
6use Illuminate\Support\ServiceProvider;
7 
8class MyServiceProvider extends ServiceProvider
9{
10 public function register()
11 {
12 /** @var Router $router */
13 $router = $this->app['router'];
14 $router->pushMiddlewareToGroup('web', CustomMiddleware::class);
15 }
16}

También si quisieran agregar un alias para un middleware lo pueden hacer de esta forma:

1<?php
2 
3namespace MyPackage\Namespace;
4 
5use MyPackage\Http\Middleware\CustomMiddleware;
6use Illuminate\Support\ServiceProvider;
7 
8class MyServiceProvider extends ServiceProvider
9{
10 public function register()
11 {
12 /** @var Router $router */
13 $router = $this->app['router'];
14 $router->aliasMiddleware(
15 'custom.middleware',
16 CustomMiddleware::class
17 );
18 }
19}

Y ya a partir de aquí queda de ustedes usarlo en las rutas o en el constructor de sus controladores. 😉

Angel Cruz's avatar
Autor
Angel Cruz