From b0120a2ed2f4b6ab9b06a6359c05ad7cec9d09f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Mon, 30 Aug 2021 18:44:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- http-helper/Route/Node.php | 20 +++++++++++++++++--- http-helper/Route/Router.php | 12 +++++++++--- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/http-helper/Route/Node.php b/http-helper/Route/Node.php index 69c9e705..0b01f7d3 100644 --- a/http-helper/Route/Node.php +++ b/http-helper/Route/Node.php @@ -156,10 +156,17 @@ class Node * @return mixed * @throws NotFindClassException * @throws ReflectionException + * @throws Exception */ private function injectControllerMiddleware($method, $handler, $_injectParameters): mixed { - MiddlewareManager::addMiddlewares($handler[0], $handler[1], $this->middleware[$method] ?? []); + $middleware = $this->middleware[$method] ?? []; + + $allowMiddleware = router()->getMiddleware(); + if (!empty($allowMiddleware)){ + array_unshift($middleware, $allowMiddleware); + } + MiddlewareManager::addMiddlewares($handler[0], $handler[1], $middleware); return MiddlewareManager::callerMiddlewares( $handler[0], $handler[1], $this->aopHandler($this->getAop($handler), $handler, $_injectParameters) ); @@ -171,11 +178,18 @@ class Node * @param $handler * @param $_injectParameters * @return Closure + * @throws Exception */ private function injectClosureMiddleware($method, $handler, $_injectParameters): Closure { - if (!empty($this->middleware[$method] ?? [])) { - return MiddlewareManager::closureMiddlewares($this->middleware[$method], + $middleware = $this->middleware[$method] ?? []; + + $allowMiddleware = router()->getMiddleware(); + if (!empty($allowMiddleware)){ + array_unshift($middleware, $allowMiddleware); + } + if (!empty($middleware)) { + return MiddlewareManager::closureMiddlewares($middleware, $this->normalHandler($handler, $_injectParameters) ); } else { diff --git a/http-helper/Route/Router.php b/http-helper/Route/Router.php index c1212dc2..5512af3f 100644 --- a/http-helper/Route/Router.php +++ b/http-helper/Route/Router.php @@ -290,9 +290,6 @@ class Router extends HttpService implements RouterInterface $node->namespace = $this->loadNamespace($method); $name = array_column($this->groupTacks, 'middleware'); - if ($this->middleware instanceof \Closure) { - $node->addMiddleware($method, [$this->middleware]); - } if (is_array($name)) { $node->addMiddleware($method, $this->resolve_middleware($name)); } @@ -300,6 +297,15 @@ class Router extends HttpService implements RouterInterface } + /** + * @return Closure + */ + public function getMiddleware(): Closure + { + return $this->middleware; + } + + /** * @param string|array $middleware * @return array