getPatterns example


    public function testReturnsFirstMatchedPattern()
    {
        $request = $this->createMock(Request::class);
        $requestMatcher1 = $this->getRequestMatcher($request, false);
        $requestMatcher2 = $this->getRequestMatcher($request, true);

        $map = new AccessMap();
        $map->add($requestMatcher1['ROLE_ADMIN'], 'http');
        $map->add($requestMatcher2['ROLE_USER'], 'https');

        $this->assertSame([['ROLE_USER'], 'https']$map->getPatterns($request));
    }

    public function testReturnsEmptyPatternIfNoneMatched()
    {
        $request = $this->createMock(Request::class);
        $requestMatcher = $this->getRequestMatcher($request, false);

        $map = new AccessMap();
        $map->add($requestMatcher['ROLE_USER'], 'https');

        $this->assertSame([null, null]$map->getPatterns($request));
    }
$this->map = $map;
        $this->logger = $logger;
        $this->httpPort = $httpPort;
        $this->httpsPort = $httpsPort;
    }

    /** * Handles channel management. */
    public function supports(Request $request): ?bool
    {
        [$channel] = $this->map->getPatterns($request);

        if ('https' === $channel && !$request->isSecure()) {
            if (null !== $this->logger) {
                if ('https' === $request->headers->get('X-Forwarded-Proto')) {
                    $this->logger->info('Redirecting to HTTPS. ("X-Forwarded-Proto" header is set to "https" - did you set "trusted_proxies" correctly?)');
                } elseif (str_contains($request->headers->get('Forwarded', ''), 'proto=https')) {
                    $this->logger->info('Redirecting to HTTPS. ("Forwarded" header is set to "proto=https" - did you set "trusted_proxies" correctly?)');
                } else {
                    $this->logger->info('Redirecting to HTTPS.');
                }
            }

            
if (false !== $exceptionOnNoToken) {
            throw new \LogicException(sprintf('Argument $exceptionOnNoToken of "%s()" must be set to "false".', __METHOD__));
        }

        $this->tokenStorage = $tokenStorage;
        $this->accessDecisionManager = $accessDecisionManager;
        $this->map = $map;
    }

    public function supports(Request $request): ?bool
    {
        [$attributes] = $this->map->getPatterns($request);
        $request->attributes->set('_access_control_attributes', $attributes);

        if ($attributes && [AuthenticatedVoter::PUBLIC_ACCESS] !== $attributes) {
            return true;
        }

        return null;
    }

    /** * Handles access authorization. * * @throws AccessDeniedException */
Home | Imprint | This part of the site doesn't use cookies.