mirror of
https://github.com/flarum/framework.git
synced 2025-03-03 11:03:27 +08:00
Use container events as an alternative to the ConfigureMiddleware event (#1462)
By moving the DispatchRoute middleware into an `afterResolving` callback, this will allow a new Middleware extender to add a `resolving` callback to the appropriate container binding, removing the need for the ConfigureMiddleware event. The ConfigureMiddleware event has been deprecated and should be removed in beta 9.
This commit is contained in:
parent
aae8aa4a51
commit
5d44b6f259
@ -11,18 +11,11 @@
|
|||||||
|
|
||||||
namespace Flarum\Admin;
|
namespace Flarum\Admin;
|
||||||
|
|
||||||
use Flarum\Admin\Middleware\RequireAdministrateAbility;
|
|
||||||
use Flarum\Event\ConfigureMiddleware;
|
use Flarum\Event\ConfigureMiddleware;
|
||||||
use Flarum\Foundation\AbstractServiceProvider;
|
use Flarum\Foundation\AbstractServiceProvider;
|
||||||
|
use Flarum\Foundation\Application;
|
||||||
use Flarum\Frontend\RecompileFrontendAssets;
|
use Flarum\Frontend\RecompileFrontendAssets;
|
||||||
use Flarum\Http\Middleware\AuthenticateWithSession;
|
use Flarum\Http\Middleware as HttpMiddleware;
|
||||||
use Flarum\Http\Middleware\DispatchRoute;
|
|
||||||
use Flarum\Http\Middleware\HandleErrorsWithView;
|
|
||||||
use Flarum\Http\Middleware\HandleErrorsWithWhoops;
|
|
||||||
use Flarum\Http\Middleware\ParseJsonBody;
|
|
||||||
use Flarum\Http\Middleware\RememberFromCookie;
|
|
||||||
use Flarum\Http\Middleware\SetLocale;
|
|
||||||
use Flarum\Http\Middleware\StartSession;
|
|
||||||
use Flarum\Http\RouteCollection;
|
use Flarum\Http\RouteCollection;
|
||||||
use Flarum\Http\RouteHandlerFactory;
|
use Flarum\Http\RouteHandlerFactory;
|
||||||
use Flarum\Http\UrlGenerator;
|
use Flarum\Http\UrlGenerator;
|
||||||
@ -43,30 +36,32 @@ class AdminServiceProvider extends AbstractServiceProvider
|
|||||||
return new RouteCollection;
|
return new RouteCollection;
|
||||||
});
|
});
|
||||||
|
|
||||||
$this->app->singleton('flarum.admin.middleware', function ($app) {
|
$this->app->singleton('flarum.admin.middleware', function (Application $app) {
|
||||||
$pipe = new MiddlewarePipe;
|
$pipe = new MiddlewarePipe;
|
||||||
|
|
||||||
// All requests should first be piped through our global error handler
|
// All requests should first be piped through our global error handler
|
||||||
if ($app->inDebugMode()) {
|
if ($app->inDebugMode()) {
|
||||||
$pipe->pipe($app->make(HandleErrorsWithWhoops::class));
|
$pipe->pipe($app->make(HttpMiddleware\HandleErrorsWithWhoops::class));
|
||||||
} else {
|
} else {
|
||||||
$pipe->pipe($app->make(HandleErrorsWithView::class));
|
$pipe->pipe($app->make(HttpMiddleware\HandleErrorsWithView::class));
|
||||||
}
|
}
|
||||||
|
|
||||||
$pipe->pipe($app->make(ParseJsonBody::class));
|
$pipe->pipe($app->make(HttpMiddleware\ParseJsonBody::class));
|
||||||
$pipe->pipe($app->make(StartSession::class));
|
$pipe->pipe($app->make(HttpMiddleware\StartSession::class));
|
||||||
$pipe->pipe($app->make(RememberFromCookie::class));
|
$pipe->pipe($app->make(HttpMiddleware\RememberFromCookie::class));
|
||||||
$pipe->pipe($app->make(AuthenticateWithSession::class));
|
$pipe->pipe($app->make(HttpMiddleware\AuthenticateWithSession::class));
|
||||||
$pipe->pipe($app->make(SetLocale::class));
|
$pipe->pipe($app->make(HttpMiddleware\SetLocale::class));
|
||||||
$pipe->pipe($app->make(RequireAdministrateAbility::class));
|
$pipe->pipe($app->make(Middleware\RequireAdministrateAbility::class));
|
||||||
|
|
||||||
event(new ConfigureMiddleware($pipe, 'admin'));
|
event(new ConfigureMiddleware($pipe, 'admin'));
|
||||||
|
|
||||||
$pipe->pipe(new DispatchRoute($app->make('flarum.admin.routes')));
|
|
||||||
|
|
||||||
return $pipe;
|
return $pipe;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$this->app->afterResolving('flarum.admin.middleware', function (MiddlewarePipe $pipe) {
|
||||||
|
$pipe->pipe(new HttpMiddleware\DispatchRoute($this->app->make('flarum.admin.routes')));
|
||||||
|
});
|
||||||
|
|
||||||
$this->app->bind('flarum.admin.assets', function () {
|
$this->app->bind('flarum.admin.assets', function () {
|
||||||
return $this->app->make('flarum.frontend.assets.defaults')('admin');
|
return $this->app->make('flarum.frontend.assets.defaults')('admin');
|
||||||
});
|
});
|
||||||
|
@ -12,8 +12,6 @@
|
|||||||
namespace Flarum\Api;
|
namespace Flarum\Api;
|
||||||
|
|
||||||
use Flarum\Api\Controller\AbstractSerializeController;
|
use Flarum\Api\Controller\AbstractSerializeController;
|
||||||
use Flarum\Api\Middleware\FakeHttpMethods;
|
|
||||||
use Flarum\Api\Middleware\HandleErrors;
|
|
||||||
use Flarum\Api\Serializer\AbstractSerializer;
|
use Flarum\Api\Serializer\AbstractSerializer;
|
||||||
use Flarum\Api\Serializer\BasicDiscussionSerializer;
|
use Flarum\Api\Serializer\BasicDiscussionSerializer;
|
||||||
use Flarum\Api\Serializer\NotificationSerializer;
|
use Flarum\Api\Serializer\NotificationSerializer;
|
||||||
@ -21,13 +19,8 @@ use Flarum\Event\ConfigureApiRoutes;
|
|||||||
use Flarum\Event\ConfigureMiddleware;
|
use Flarum\Event\ConfigureMiddleware;
|
||||||
use Flarum\Event\ConfigureNotificationTypes;
|
use Flarum\Event\ConfigureNotificationTypes;
|
||||||
use Flarum\Foundation\AbstractServiceProvider;
|
use Flarum\Foundation\AbstractServiceProvider;
|
||||||
use Flarum\Http\Middleware\AuthenticateWithHeader;
|
use Flarum\Foundation\Application;
|
||||||
use Flarum\Http\Middleware\AuthenticateWithSession;
|
use Flarum\Http\Middleware as HttpMiddleware;
|
||||||
use Flarum\Http\Middleware\DispatchRoute;
|
|
||||||
use Flarum\Http\Middleware\ParseJsonBody;
|
|
||||||
use Flarum\Http\Middleware\RememberFromCookie;
|
|
||||||
use Flarum\Http\Middleware\SetLocale;
|
|
||||||
use Flarum\Http\Middleware\StartSession;
|
|
||||||
use Flarum\Http\RouteCollection;
|
use Flarum\Http\RouteCollection;
|
||||||
use Flarum\Http\RouteHandlerFactory;
|
use Flarum\Http\RouteHandlerFactory;
|
||||||
use Flarum\Http\UrlGenerator;
|
use Flarum\Http\UrlGenerator;
|
||||||
@ -51,26 +44,28 @@ class ApiServiceProvider extends AbstractServiceProvider
|
|||||||
return new RouteCollection;
|
return new RouteCollection;
|
||||||
});
|
});
|
||||||
|
|
||||||
$this->app->singleton('flarum.api.middleware', function ($app) {
|
$this->app->singleton('flarum.api.middleware', function (Application $app) {
|
||||||
$pipe = new MiddlewarePipe;
|
$pipe = new MiddlewarePipe;
|
||||||
|
|
||||||
$pipe->pipe($app->make(HandleErrors::class));
|
$pipe->pipe($app->make(Middleware\HandleErrors::class));
|
||||||
|
|
||||||
$pipe->pipe($app->make(ParseJsonBody::class));
|
$pipe->pipe($app->make(HttpMiddleware\ParseJsonBody::class));
|
||||||
$pipe->pipe($app->make(FakeHttpMethods::class));
|
$pipe->pipe($app->make(Middleware\FakeHttpMethods::class));
|
||||||
$pipe->pipe($app->make(StartSession::class));
|
$pipe->pipe($app->make(HttpMiddleware\StartSession::class));
|
||||||
$pipe->pipe($app->make(RememberFromCookie::class));
|
$pipe->pipe($app->make(HttpMiddleware\RememberFromCookie::class));
|
||||||
$pipe->pipe($app->make(AuthenticateWithSession::class));
|
$pipe->pipe($app->make(HttpMiddleware\AuthenticateWithSession::class));
|
||||||
$pipe->pipe($app->make(AuthenticateWithHeader::class));
|
$pipe->pipe($app->make(HttpMiddleware\AuthenticateWithHeader::class));
|
||||||
$pipe->pipe($app->make(SetLocale::class));
|
$pipe->pipe($app->make(HttpMiddleware\SetLocale::class));
|
||||||
|
|
||||||
event(new ConfigureMiddleware($pipe, 'api'));
|
event(new ConfigureMiddleware($pipe, 'api'));
|
||||||
|
|
||||||
$pipe->pipe(new DispatchRoute($app->make('flarum.api.routes')));
|
|
||||||
|
|
||||||
return $pipe;
|
return $pipe;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$this->app->afterResolving('flarum.api.middleware', function (MiddlewarePipe $pipe) {
|
||||||
|
$pipe->pipe(new HttpMiddleware\DispatchRoute($this->app->make('flarum.api.routes')));
|
||||||
|
});
|
||||||
|
|
||||||
$this->app->singleton(ErrorHandler::class, function () {
|
$this->app->singleton(ErrorHandler::class, function () {
|
||||||
$handler = new ErrorHandler;
|
$handler = new ErrorHandler;
|
||||||
|
|
||||||
|
@ -14,16 +14,9 @@ namespace Flarum\Forum;
|
|||||||
use Flarum\Event\ConfigureForumRoutes;
|
use Flarum\Event\ConfigureForumRoutes;
|
||||||
use Flarum\Event\ConfigureMiddleware;
|
use Flarum\Event\ConfigureMiddleware;
|
||||||
use Flarum\Foundation\AbstractServiceProvider;
|
use Flarum\Foundation\AbstractServiceProvider;
|
||||||
use Flarum\Http\Middleware\AuthenticateWithSession;
|
use Flarum\Foundation\Application;
|
||||||
use Flarum\Http\Middleware\CollectGarbage;
|
use Flarum\Frontend\RecompileFrontendAssets;
|
||||||
use Flarum\Http\Middleware\DispatchRoute;
|
use Flarum\Http\Middleware as HttpMiddleware;
|
||||||
use Flarum\Http\Middleware\HandleErrorsWithView;
|
|
||||||
use Flarum\Http\Middleware\HandleErrorsWithWhoops;
|
|
||||||
use Flarum\Http\Middleware\ParseJsonBody;
|
|
||||||
use Flarum\Http\Middleware\RememberFromCookie;
|
|
||||||
use Flarum\Http\Middleware\SetLocale;
|
|
||||||
use Flarum\Http\Middleware\ShareErrorsFromSession;
|
|
||||||
use Flarum\Http\Middleware\StartSession;
|
|
||||||
use Flarum\Http\RouteCollection;
|
use Flarum\Http\RouteCollection;
|
||||||
use Flarum\Http\RouteHandlerFactory;
|
use Flarum\Http\RouteHandlerFactory;
|
||||||
use Flarum\Http\UrlGenerator;
|
use Flarum\Http\UrlGenerator;
|
||||||
@ -46,31 +39,33 @@ class ForumServiceProvider extends AbstractServiceProvider
|
|||||||
return new RouteCollection;
|
return new RouteCollection;
|
||||||
});
|
});
|
||||||
|
|
||||||
$this->app->singleton('flarum.forum.middleware', function ($app) {
|
$this->app->singleton('flarum.forum.middleware', function (Application $app) {
|
||||||
$pipe = new MiddlewarePipe;
|
$pipe = new MiddlewarePipe;
|
||||||
|
|
||||||
// All requests should first be piped through our global error handler
|
// All requests should first be piped through our global error handler
|
||||||
if ($app->inDebugMode()) {
|
if ($app->inDebugMode()) {
|
||||||
$pipe->pipe($app->make(HandleErrorsWithWhoops::class));
|
$pipe->pipe($app->make(HttpMiddleware\HandleErrorsWithWhoops::class));
|
||||||
} else {
|
} else {
|
||||||
$pipe->pipe($app->make(HandleErrorsWithView::class));
|
$pipe->pipe($app->make(HttpMiddleware\HandleErrorsWithView::class));
|
||||||
}
|
}
|
||||||
|
|
||||||
$pipe->pipe($app->make(ParseJsonBody::class));
|
$pipe->pipe($app->make(HttpMiddleware\ParseJsonBody::class));
|
||||||
$pipe->pipe($app->make(CollectGarbage::class));
|
$pipe->pipe($app->make(HttpMiddleware\CollectGarbage::class));
|
||||||
$pipe->pipe($app->make(StartSession::class));
|
$pipe->pipe($app->make(HttpMiddleware\StartSession::class));
|
||||||
$pipe->pipe($app->make(RememberFromCookie::class));
|
$pipe->pipe($app->make(HttpMiddleware\RememberFromCookie::class));
|
||||||
$pipe->pipe($app->make(AuthenticateWithSession::class));
|
$pipe->pipe($app->make(HttpMiddleware\AuthenticateWithSession::class));
|
||||||
$pipe->pipe($app->make(SetLocale::class));
|
$pipe->pipe($app->make(HttpMiddleware\SetLocale::class));
|
||||||
$pipe->pipe($app->make(ShareErrorsFromSession::class));
|
$pipe->pipe($app->make(HttpMiddleware\ShareErrorsFromSession::class));
|
||||||
|
|
||||||
event(new ConfigureMiddleware($pipe, 'forum'));
|
event(new ConfigureMiddleware($pipe, 'forum'));
|
||||||
|
|
||||||
$pipe->pipe(new DispatchRoute($app->make('flarum.forum.routes')));
|
|
||||||
|
|
||||||
return $pipe;
|
return $pipe;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$this->app->afterResolving('flarum.forum.middleware', function (MiddlewarePipe $pipe) {
|
||||||
|
$pipe->pipe(new HttpMiddleware\DispatchRoute($this->app->make('flarum.forum.routes')));
|
||||||
|
});
|
||||||
|
|
||||||
$this->app->bind('flarum.forum.assets', function () {
|
$this->app->bind('flarum.forum.assets', function () {
|
||||||
$assets = $this->app->make('flarum.frontend.assets.defaults')('forum');
|
$assets = $this->app->make('flarum.frontend.assets.defaults')('forum');
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user