Verified Commit 1e356a6d authored by Lee Rowlands's avatar Lee Rowlands
Browse files

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

(cherry picked from commit c981ed1c)
parent 272f814c
Loading
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -7,8 +7,10 @@
use Drupal\Core\Cache\CacheableDependencyInterface;
use Drupal\Core\Http\Exception\CacheableAccessDeniedHttpException;
use Drupal\Core\Session\AccountInterface;
use Symfony\Component\HttpFoundation\Exception\BadRequestException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\RequestContext as SymfonyRequestContext;
use Symfony\Component\Routing\RouterInterface;
@@ -138,7 +140,13 @@ public function generate($name, $parameters = [], $referenceType = self::ABSOLUT
   *   Thrown when access checking failed.
   */
  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);
  }

}
+7 −1
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
namespace Drupal\Core\Routing;

use Drupal\Core\Path\CurrentPathStack;
use Symfony\Component\HttpFoundation\Exception\BadRequestException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Exception\MethodNotAllowedException;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
@@ -98,7 +99,12 @@ public function addRouteEnhancer(EnhancerInterface $route_enhancer) {
   * {@inheritdoc}
   */
  public function match($pathinfo): array {
    try {
      $request = Request::create($pathinfo);
    }
    catch (BadRequestException $e) {
      throw new ResourceNotFoundException($e->getMessage(), $e->getCode(), $e);
    }

    return $this->matchRequest($request);
  }
+4 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
use Drupal\Core\Routing\UrlGeneratorInterface;
use Drupal\Tests\UnitTestCase;
use Prophecy\Argument;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;

@@ -59,6 +60,9 @@ public function testMatchesWithDifferentFitOrder(): void {
    $result = $router->match('/user/login');

    $this->assertEquals('user_login', $result['_route']);

    $this->expectException(ResourceNotFoundException::class);
    $router->match('/user/login ');
  }

}