Skip to content
Snippets Groups Projects
Verified Commit c981ed1c authored by Lee Rowlands's avatar Lee Rowlands
Browse files

Issue #3491543 by mfb: symfony/http-foundation Follow up issue for isAdminPath validator

parent 97cb575e
No related branches found
No related tags found
No related merge requests found
...@@ -7,8 +7,10 @@ ...@@ -7,8 +7,10 @@
use Drupal\Core\Cache\CacheableDependencyInterface; use Drupal\Core\Cache\CacheableDependencyInterface;
use Drupal\Core\Http\Exception\CacheableAccessDeniedHttpException; use Drupal\Core\Http\Exception\CacheableAccessDeniedHttpException;
use Drupal\Core\Session\AccountInterface; use Drupal\Core\Session\AccountInterface;
use Symfony\Component\HttpFoundation\Exception\BadRequestException;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\RequestContext as SymfonyRequestContext; use Symfony\Component\Routing\RequestContext as SymfonyRequestContext;
use Symfony\Component\Routing\RouterInterface; use Symfony\Component\Routing\RouterInterface;
...@@ -138,7 +140,13 @@ public function generate($name, $parameters = [], $referenceType = self::ABSOLUT ...@@ -138,7 +140,13 @@ public function generate($name, $parameters = [], $referenceType = self::ABSOLUT
* Thrown when access checking failed. * Thrown when access checking failed.
*/ */
public function match($pathinfo): array { public function match($pathinfo): array {
return $this->matchRequest(Request::create($pathinfo)); try {
$request = Request::create($pathinfo);
}
catch (BadRequestException $e) {
throw new ResourceNotFoundException($e->getMessage(), $e->getCode(), $e);
}
return $this->matchRequest($request);
} }
} }
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
namespace Drupal\Core\Routing; namespace Drupal\Core\Routing;
use Drupal\Core\Path\CurrentPathStack; use Drupal\Core\Path\CurrentPathStack;
use Symfony\Component\HttpFoundation\Exception\BadRequestException;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Exception\MethodNotAllowedException; use Symfony\Component\Routing\Exception\MethodNotAllowedException;
use Symfony\Component\Routing\Exception\ResourceNotFoundException; use Symfony\Component\Routing\Exception\ResourceNotFoundException;
...@@ -98,7 +99,12 @@ public function addRouteEnhancer(EnhancerInterface $route_enhancer) { ...@@ -98,7 +99,12 @@ public function addRouteEnhancer(EnhancerInterface $route_enhancer) {
* {@inheritdoc} * {@inheritdoc}
*/ */
public function match($pathinfo): array { public function match($pathinfo): array {
$request = Request::create($pathinfo); try {
$request = Request::create($pathinfo);
}
catch (BadRequestException $e) {
throw new ResourceNotFoundException($e->getMessage(), $e->getCode(), $e);
}
return $this->matchRequest($request); return $this->matchRequest($request);
} }
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
use Drupal\Core\Routing\UrlGeneratorInterface; use Drupal\Core\Routing\UrlGeneratorInterface;
use Drupal\Tests\UnitTestCase; use Drupal\Tests\UnitTestCase;
use Prophecy\Argument; use Prophecy\Argument;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
use Symfony\Component\Routing\Route; use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Routing\RouteCollection;
...@@ -59,6 +60,9 @@ public function testMatchesWithDifferentFitOrder(): void { ...@@ -59,6 +60,9 @@ public function testMatchesWithDifferentFitOrder(): void {
$result = $router->match('/user/login'); $result = $router->match('/user/login');
$this->assertEquals('user_login', $result['_route']); $this->assertEquals('user_login', $result['_route']);
$this->expectException(ResourceNotFoundException::class);
$router->match('/user/login ');
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment