Neos\Flow\Security\Authentication\EntryPoint\WebRedirect::startAuthentication PHP Method

startAuthentication() public method

Starts the authentication: Redirect to login page
public startAuthentication ( Request $request, Response $response ) : void
$request Neos\Flow\Http\Request The current request
$response Neos\Flow\Http\Response The current response
return void
    public function startAuthentication(Request $request, Response $response)
    {
        if (isset($this->options['routeValues'])) {
            $routeValues = $this->options['routeValues'];
            if (!is_array($routeValues)) {
                throw new MissingConfigurationException(sprintf('The configuration for the WebRedirect authentication entry point is incorrect. "routeValues" must be an array, got "%s".', gettype($routeValues)), 1345040415);
            }
            $actionRequest = new ActionRequest($request);
            $this->uriBuilder->setRequest($actionRequest);
            $actionName = $this->extractRouteValue($routeValues, '@action');
            $controllerName = $this->extractRouteValue($routeValues, '@controller');
            $packageKey = $this->extractRouteValue($routeValues, '@package');
            $subPackageKey = $this->extractRouteValue($routeValues, '@subpackage');
            $uri = $this->uriBuilder->setCreateAbsoluteUri(true)->uriFor($actionName, $routeValues, $controllerName, $packageKey, $subPackageKey);
        } elseif (isset($this->options['uri'])) {
            $uri = strpos($this->options['uri'], '://') !== false ? $this->options['uri'] : $request->getBaseUri() . $this->options['uri'];
        } else {
            throw new MissingConfigurationException('The configuration for the WebRedirect authentication entry point is incorrect or missing. You need to specify either the target "uri" or "routeValues".', 1237282583);
        }
        $response->setContent(sprintf('<html><head><meta http-equiv="refresh" content="0;url=%s"/></head></html>', htmlentities($uri, ENT_QUOTES, 'utf-8')));
        $response->setStatus(303);
        $response->setHeader('Location', $uri);
    }

Usage Example

 /**
  * @test
  * @expectedException \Neos\Flow\Security\Exception\MissingConfigurationException
  */
 public function startAuthenticationThrowsAnExceptionIfTheConfiguredRoutePartsAreInvalid()
 {
     $request = Request::create(new Uri('http://robertlemke.com/admin'));
     $response = new Response();
     $entryPoint = new WebRedirect();
     $entryPoint->setOptions(['routeValues' => 'this/is/invalid']);
     $entryPoint->startAuthentication($request, $response);
 }