[9.x] Fix pushMiddlewareToGroup not working on Provider in My Package - #42004
Conversation
|
Please provide short, specific list of steps to recreate in a fresh Laravel application. |
|
Please mark as ready for review when you have done so. ^ |
|
Repositiry https://github.com/ilyutkin/laravel branch 9.x Added two packages ilyutkin/test and xman/test. Each service provider adds middleware. Again, the syncMiddlewareToRouter method is called in prependToMiddlewarePriority which calls /laravel/sanctum/src/SanctumServiceProvider.php after my IlyutkinTestProvider. And overwrites middleware groups. |
|
Please provide short, specific list of steps to recreate in a fresh Laravel application. Please do not provide a repository for me to clone down. Just a list of steps I can take in a new Laravel application. |
|
Sorry, I got it.
If the package starts with the letter m-z everything works |
|
Reverting this since it breaks applications. |
Description:
In continuation of bug #36604. I found the reason for this bug.
We want to dynamically connect Middleware in our package in the Service Provider:
But the Middleware is not executed if the package name starts with the letters a-k.
Reason:
In the /Illuminate/Foundation/Http/Kernel.php file, the syncMiddlewareToRouter method overwrites the Middleware list in the Router
In the /Illuminate/Routing/Router.php file the middlewareGroup method
The syncMiddlewareToRouter method is called in prependToMiddlewarePriority which calls /laravel/sanctum/src/SanctumServiceProvider.php after my ServiceProvider
Service providers are named in alphabetical order. If the package name starts with letters a-k Middleware Group is overwritten. If the package name begins with the letters m-z, everything works.
Solution:
If rewriting the middleware group is not required, then you can change the middlewareGroup method in /Illuminate/Routing/Router.php
Please add to the framework if I'm right.