This method is called manually by the request handler which created the HTTP
request.
public setRequest ( |
||
$request | The current ActionRequest | |
리턴 | void |
/** * Create an action request from stored route match values and dispatch to that * * @param ComponentContext $componentContext * @return void */ public function handle(ComponentContext $componentContext) { $httpRequest = $componentContext->getHttpRequest(); /** @var $actionRequest ActionRequest */ $actionRequest = $this->objectManager->get(ActionRequest::class, $httpRequest); $this->securityContext->setRequest($actionRequest); $routingMatchResults = $componentContext->getParameter(Routing\RoutingComponent::class, 'matchResults'); $actionRequest->setArguments($this->mergeArguments($httpRequest, $routingMatchResults)); $this->setDefaultControllerAndActionNameIfNoneSpecified($actionRequest); $componentContext->setParameter(self::class, 'actionRequest', $actionRequest); $this->dispatcher->dispatch($actionRequest, $componentContext->getHttpResponse()); }
/** * @param array $patterns * @param bool $expectedActive * @test * @dataProvider separateActiveAndInactiveTokensDataProvider */ public function separateActiveAndInactiveTokensTests(array $patterns, $expectedActive) { $mockRequestPatterns = []; foreach ($patterns as $pattern) { $mockRequestPattern = $this->getMockBuilder(RequestPatternInterface::class)->setMockClassName('RequestPattern_' . $pattern['type'])->getMock(); $mockRequestPattern->expects($this->any())->method('matchRequest')->with($this->mockActionRequest)->will($this->returnValue($pattern['matchesRequest'])); $mockRequestPatterns[] = $mockRequestPattern; } $mockToken = $this->createMock(TokenInterface::class); $mockToken->expects($this->once())->method('hasRequestPatterns')->will($this->returnValue($mockRequestPatterns !== [])); $mockToken->expects($this->any())->method('getRequestPatterns')->will($this->returnValue($mockRequestPatterns)); /** @var AuthenticationManagerInterface|\PHPUnit_Framework_MockObject_MockObject $mockAuthenticationManager */ $mockAuthenticationManager = $this->createMock(AuthenticationManagerInterface::class); $mockAuthenticationManager->expects($this->once())->method('getTokens')->will($this->returnValue([$mockToken])); $this->securityContext = $this->getAccessibleMock(Context::class, ['dummy']); $settings = []; $settings['security']['authentication']['authenticationStrategy'] = 'allTokens'; $this->securityContext->injectSettings($settings); $this->securityContext->injectAuthenticationManager($mockAuthenticationManager); $this->securityContext->setRequest($this->mockActionRequest); $this->securityContext->initialize(); if ($expectedActive) { $this->assertContains($mockToken, $this->securityContext->_get('activeTokens')); } else { $this->assertContains($mockToken, $this->securityContext->_get('inactiveTokens')); } }
/** * Prepares the environment for and conducts an account authentication * * @param \Neos\Flow\Security\Account $account * @return void * @api */ protected function authenticateAccount(\Neos\Flow\Security\Account $account) { $this->testingProvider->setAuthenticationStatus(\Neos\Flow\Security\Authentication\TokenInterface::AUTHENTICATION_SUCCESSFUL); $this->testingProvider->setAccount($account); $this->securityContext->clearContext(); $requestHandler = self::$bootstrap->getActiveRequestHandler(); $actionRequest = $this->route($requestHandler->getHttpRequest()); $this->securityContext->setRequest($actionRequest); $this->authenticationManager->authenticate(); }