From f57d5cc16a62abd23274e4fd57395205906ef210 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Mon, 8 Feb 2021 02:04:38 +0100 Subject: [PATCH] MicroPresenter: removal of callback from parameters during canonization [Closes nette/routing#9] --- src/Application/MicroPresenter.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Application/MicroPresenter.php b/src/Application/MicroPresenter.php index 5a2960622..7ad23dac0 100644 --- a/src/Application/MicroPresenter.php +++ b/src/Application/MicroPresenter.php @@ -61,6 +61,14 @@ public function run(Application\Request $request): Application\Response { $this->request = $request; + $params = $request->getParameters(); + $callback = $params['callback'] ?? null; + unset($params['callback']); + + if (!is_object($callback) || !is_callable($callback)) { + throw new Application\BadRequestException('Parameter callback is not a valid closure.'); + } + if ( $this->httpRequest && $this->router @@ -68,17 +76,12 @@ public function run(Application\Request $request): Application\Response && ($request->isMethod('get') || $request->isMethod('head')) ) { $refUrl = $this->httpRequest->getUrl()->withoutUserInfo(); - $url = $this->router->constructUrl($request->toArray(), $refUrl); + $url = $this->router->constructUrl($params, $refUrl); if ($url !== null && !$refUrl->isEqual($url)) { return new Responses\RedirectResponse($url, Http\IResponse::S301_MOVED_PERMANENTLY); } } - $params = $request->getParameters(); - $callback = $params['callback'] ?? null; - if (!is_object($callback) || !is_callable($callback)) { - throw new Application\BadRequestException('Parameter callback is not a valid closure.'); - } $reflection = Nette\Utils\Callback::toReflection($callback); if ($this->context) {