feat: process middleware aliases in all fire* methods
All checks were successful
CI / PHP 8.3 (push) Successful in 2m13s
CI / PHP 8.4 (push) Successful in 2m12s

Extracted processMiddleware() helper and added it to fireWebRoutes,
fireAdminBooting, fireClientRoutes, fireApiRoutes, fireMcpRoutes,
and fireConsoleBooting. Modules can now register middleware aliases
via $event->middleware() on any lifecycle event consistently.

Previously only fireApiRoutes processed middleware (added in prior
commit), other methods silently ignored them despite the base
LifecycleEvent class supporting it.

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Snider 2026-03-04 12:48:51 +00:00
parent 9b36ae0661
commit 7c20a5f905

View file

@ -244,6 +244,22 @@ class LifecycleEventProvider extends ServiceProvider
});
}
/**
* Register middleware aliases collected by a lifecycle event.
*
* Every fire* method calls this so modules can register middleware
* aliases via `$event->middleware('alias', Class::class)` on any event.
*/
protected static function processMiddleware(Events\LifecycleEvent $event): void
{
/** @var \Illuminate\Routing\Router $router */
$router = app('router');
foreach ($event->middlewareRequests() as [$alias, $class]) {
$router->aliasMiddleware($alias, $class);
}
}
/**
* Fire WebRoutesRegistering and process collected requests.
*
@ -263,6 +279,8 @@ class LifecycleEventProvider extends ServiceProvider
$event = new WebRoutesRegistering;
event($event);
static::processMiddleware($event);
// Process view namespace requests
foreach ($event->viewRequests() as [$namespace, $path]) {
if (is_dir($path)) {
@ -308,6 +326,8 @@ class LifecycleEventProvider extends ServiceProvider
$event = new AdminPanelBooting;
event($event);
static::processMiddleware($event);
// Process view namespace requests
foreach ($event->viewRequests() as [$namespace, $path]) {
if (is_dir($path)) {
@ -356,6 +376,8 @@ class LifecycleEventProvider extends ServiceProvider
$event = new ClientRoutesRegistering;
event($event);
static::processMiddleware($event);
// Process view namespace requests
foreach ($event->viewRequests() as [$namespace, $path]) {
if (is_dir($path)) {
@ -395,12 +417,7 @@ class LifecycleEventProvider extends ServiceProvider
$event = new ApiRoutesRegistering;
event($event);
// Process middleware alias requests
/** @var \Illuminate\Routing\Router $router */
$router = app('router');
foreach ($event->middlewareRequests() as [$alias, $class]) {
$router->aliasMiddleware($alias, $class);
}
static::processMiddleware($event);
// Process route requests with api middleware
foreach ($event->routeRequests() as $callback) {
@ -423,6 +440,8 @@ class LifecycleEventProvider extends ServiceProvider
$event = new McpRoutesRegistering;
event($event);
static::processMiddleware($event);
// Process route requests with mcp middleware
foreach ($event->routeRequests() as $callback) {
Route::middleware('mcp')->group($callback);
@ -458,6 +477,8 @@ class LifecycleEventProvider extends ServiceProvider
$event = new ConsoleBooting;
event($event);
static::processMiddleware($event);
// Process command requests
if (! empty($event->commandRequests())) {
$this->commands($event->commandRequests());