Definir middlewares de Laravel dentro de un paquete de composer.

Angel Cruz
Angel Cruz

10 DE December DE 2022

Ú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. 😉

Te podrá interesar
¿Vale la pena testear modelos en Laravel? Descubre cuándo es útil, mejores prácticas y errores comunes al hacerlo.
Laravel Nightwatch es la nueva herramienta oficial de monitoreo de Laravel. Descubre cómo se compara frente a Sentry en esta guía completa y optimizada para SEO.
Descubre cómo aplicar diseño atómico en Laravel con Blade para crear interfaces escalables, limpias y reutilizables. ¡Guía paso a paso!

Made with ♥️ & 🧉 in Montevideo, Uruguay.

[AC].dev is not affiliated with Laravel or Laravel LLC. Laravel is a Trademark of Taylor Otwell.

Code highlighting provided by Torchlight.

We use cookies!

Hi, this website uses essential cookies to ensure its proper operation and tracking cookies to understand how you interact with it.