Definir middlewares de Laravel dentro de un paquete de composer.
Este artículo tiene más de un año de antigüedad, el contenido pudiera estar obsoleto.
Ú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::class17 );18 }19}
Y ya a partir de aquí queda de ustedes usarlo en las rutas o en el constructor de sus controladores. 😉