Definir middlewares de Laravel dentro de un paquete de composer.
-
Angel Cruz
-
Publicado @
Ú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. 😉