/** * @param \Symfony\Component\HttpFoundation\Request $request * @throws \InvalidArgumentException if cannot manage the Request * @return \Symfony\Component\HttpFoundation\Response|SamlSpInfo */ public function manage(Request $request) { if (false == $this->supports($request)) { throw new \InvalidArgumentException('Unsupported request'); } $serviceInfo = $this->serviceInfoCollection->findByAS($request->query->get('as')); if (!$serviceInfo) { return new RedirectResponse($this->httpUtils->generateUri($request, $request->attributes->get('discovery_path'))); } $serviceInfo->getSpProvider()->setRequest($request); $spED = $serviceInfo->getSpProvider()->getEntityDescriptor(); $idpED = $serviceInfo->getIdpProvider()->getEntityDescriptor(); $spMeta = $serviceInfo->getSpMetaProvider()->getSpMeta(); $builder = new AuthnRequestBuilder($spED, $idpED, $spMeta); $message = $builder->build(); if ($serviceInfo->getSpSigningProvider()->isEnabled()) { $message->sign($serviceInfo->getSpSigningProvider()->getCertificate(), $serviceInfo->getSpSigningProvider()->getPrivateKey()); } $binding = $this->bindingManager->instantiate($spMeta->getAuthnRequestBinding()); $bindingResponse = $binding->send($message); if ($bindingResponse instanceof \AerialShip\LightSaml\Binding\RedirectResponse) { $result = new RedirectResponse($bindingResponse->getDestination()); } else { if ($bindingResponse instanceof \AerialShip\LightSaml\Binding\PostResponse) { $result = new Response($bindingResponse->render()); } else { throw new \RuntimeException('Unrecognized binding response ' . get_class($bindingResponse)); } } $state = new RequestState(); $state->setId($message->getID()); $state->setDestination($serviceInfo->getIdpProvider()->getEntityDescriptor()->getEntityID()); $this->requestStore->set($state); return $result; }
/** * @expectedException \RuntimeException */ public function testCheckRequestPathWithRouterLoadingException() { $router = $this->getMock('Symfony\\Component\\Routing\\RouterInterface'); $router->expects($this->any())->method('match')->will($this->throwException(new \RuntimeException())); $utils = new HttpUtils($router); $utils->checkRequestPath($this->getRequest(), 'foobar'); }
public function testCheckRequestPath() { $utils = new HttpUtils($this->getUrlGenerator()); $this->assertTrue($utils->checkRequestPath($this->getRequest(), '/')); $this->assertFalse($utils->checkRequestPath($this->getRequest(), '/foo')); $this->assertFalse($utils->checkRequestPath($this->getRequest(), 'foobar')); $this->assertTrue($utils->checkRequestPath($this->getRequest('/foo/bar'), 'foobar')); }
function it_clears_cart_session_after_logging_out_and_return_default_handler_response(ChannelContextInterface $channelContext, ChannelInterface $channel, HttpUtils $httpUtils, Request $request, Response $response, SessionInterface $session) { $channelContext->getChannel()->willReturn($channel); $channel->getCode()->willReturn('WEB_US'); $session->remove('_sylius.cart.WEB_US')->shouldBeCalled(); $httpUtils->createRedirectResponse($request, '/')->willReturn($response); $this->onLogoutSuccess($request)->shouldReturn($response); }
/** * Gets the appropriate resource owner for a request. * * @param Request $request * * @return null|array */ public function getResourceOwnerByRequest(Request $request) { foreach ($this->resourceOwners as $name => $checkPath) { if ($this->httpUtils->checkRequestPath($request, $checkPath)) { return array($this->getResourceOwnerByName($name), $checkPath); } } }
/** * @param \Symfony\Component\HttpFoundation\Request $request * @return bool */ public function supports(Request $request) { if ($this->httpUtils->checkRequestPath($request, $request->attributes->get('failure_path'))) { return false; } $token = $this->securityContext->getToken(); $result = $token != null && $token->isAuthenticated() && $token instanceof SamlSpToken && $token->getSamlSpInfo() != null && $token->getSamlSpInfo()->getAuthnStatement() != null; return $result; }
/** * {@inheritDoc} */ public function start(Request $request, AuthenticationException $authException = null) { // redirect to the login url if there are several resource owners if (null === $this->resourceOwner) { return $this->httpUtils->createRedirectResponse($request, $this->loginPath); } // otherwise start authentication $authorizationUrl = $this->resourceOwner->getAuthorizationUrl($this->httpUtils->createRequest($request, $this->checkPath)->getUri()); return $this->httpUtils->createRedirectResponse($request, $authorizationUrl); }
/** * {@inheritDoc} */ public function start(Request $request, AuthenticationException $authException = null) { if (!$this->httpUtils->checkRequestPath($request, $this->checkPath)) { if ($this->httpUtils->checkRequestPath($request, $this->loginPath)) { $request->getSession()->remove('_security.target_path'); } $authorizationUrl = $this->oauthProvider->getAuthorizationUrl($request); return $this->httpUtils->createRedirectResponse($request, $authorizationUrl); } throw $authException; }
public function onKernelException(GetResponseForExceptionEvent $event) { $exception = $event->getException(); if (!$exception instanceof TermsNotAgreedException) { return; } $route = 'tos_agree'; $request = $event->getRequest(); $request->getSession()->set('tos_continue_url', $request->getRequestUri()); $response = $this->httpUtils->createRedirectResponse($request, $route); $event->setResponse($response); }
/** * {@inheritDoc} */ public function start(Request $request, AuthenticationException $authException = null) { if ($this->useForward) { $subRequest = $this->httpUtils->createRequest($request, $this->loginPath); $response = $this->httpKernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST); if (200 === $response->getStatusCode()) { $response->headers->set('X-Status-Code', 401); } return $response; } return $this->httpUtils->createRedirectResponse($request, $this->loginPath); }
public function onAuthenticationSuccess(Request $request, TokenInterface $token) { $this->logger->debug('After login'); $path = $this->defaultPath; if ($request->getSession()->has('order')) { $this->logger->debug('Order to authenticate'); $request->getSession()->get('order')->authenticateWith($token->getUser()); $path = $this->orderNextStepRoute; } $this->logger->debug("Redirect to {$path}"); return $this->httpUtils->createRedirectResponse($request, $path); }
/** * @param \Symfony\Component\HttpFoundation\Request $request * @throws \Symfony\Component\Process\Exception\RuntimeException * @return \Symfony\Component\HttpFoundation\Response|SamlSpInfo */ function manage(Request $request) { $serviceInfo = $this->serviceInfoCollection->findByAS($request->query->get('as')); if (!$serviceInfo) { return $this->httpUtils->createRedirectResponse($request, $request->attributes->get('discovery_path') . '?type=metadata'); } $serviceInfo->getSpProvider()->setRequest($request); $ed = $serviceInfo->getSpProvider()->getEntityDescriptor(); $context = new SerializationContext(); $ed->getXml($context->getDocument(), $context); $result = new Response($context->getDocument()->saveXML()); $result->headers->set('Content-Type', 'application/samlmetadata+xml'); return $result; }
public function testCheckRequestPath() { $utils = new HttpUtils($this->getRouter()); $this->assertTrue($utils->checkRequestPath($this->getRequest(), '/')); $this->assertFalse($utils->checkRequestPath($this->getRequest(), '/foo')); $router = $this->getMock('Symfony\\Component\\Routing\\RouterInterface'); $router->expects($this->any())->method('match')->will($this->returnValue(array())); $utils = new HttpUtils($router); $this->assertFalse($utils->checkRequestPath($this->getRequest(), 'foobar')); $router = $this->getMock('Symfony\\Component\\Routing\\RouterInterface'); $router->expects($this->any())->method('match')->will($this->returnValue(array('_route' => 'foobar'))); $utils = new HttpUtils($router); $this->assertTrue($utils->checkRequestPath($this->getRequest('/foo/bar'), 'foobar')); }
protected function getPath(Request $request) { $type = $request->query->get('type'); switch ($type) { case 'metadata': $path = $request->attributes->get('metadata_path'); break; case 'logout': $path = $request->attributes->get('logout_path'); break; default: $path = $request->attributes->get('login_path'); } $path = $this->httpUtils->generateUri($request, $path); return $path; }
/** * @param Request $request * @param string $name * * @return string */ public function getLoginUrl(Request $request, $name) { // Just to check that this resource owner exists $this->getResourceOwner($name); $request->attributes->set('service', $name); return $this->httpUtils->generateUri($request, 'hwi_oauth_service_redirect'); }
/** * {@inheritdoc} */ public function onAuthenticationSuccess(Request $request, TokenInterface $token) { $username = $token->getUsername(); $returnUrl = $this->determineTargetUrl($request); $token = $this->tokenRepository->create($username, $returnUrl); $query = http_build_query(['application' => $this->applicationName, 'token' => $token->getId()]); $url = $this->authenticateUrl . '?' . $query; return $this->httpUtils->createRedirectResponse($request, $url); }
/** * @param Request $request * @param string $name * * @return string */ public function getLoginUrl(Request $request, $name, $url) { // Just to check that this resource owner exists $this->getResourceOwner($name); $request->attributes->set('service', $name); $session = new Session(); // définit et récupère des attributs de session $session->set('name', $url); return $this->httpUtils->generateUri($request, 'hwi_oauth_service_redirect'); }
/** * @param string $path * @return string * @throws \RuntimeException */ protected function buildPath($path) { if (isset($this->config['base_url']) && $this->config['base_url']) { return $this->config['base_url'] . $path; } else { if (!$this->request) { throw new \RuntimeException('Request not set'); } return $this->httpUtils->generateUri($this->request, $path); } }
/** * {@inheritdoc} */ public function start(Request $request, AuthenticationException $authException = null) { $returnUrl = $request->getSchemeAndHttpHost() . $request->getRequestUri(); $url = $this->loginUrl . '?' . http_build_query(['application' => $this->applicationName, 'returnUrl' => $returnUrl, 'loginUrl' => $this->httpUtils->generateUri($request, $this->loginPath)]); return $this->httpUtils->createRedirectResponse($request, $url); }
/** * Constructor. * * @param UrlGeneratorInterface $urlGenerator A UrlGeneratorInterface instance * @param UrlMatcherInterface|RequestMatcherInterface $urlMatcher The URL or Request matcher * * @throws \InvalidArgumentException */ public function __construct(UrlGeneratorInterface $urlGenerator = null, $urlMatcher = null) { parent::__construct($urlGenerator, $urlMatcher); $this->urlMatcher = $urlMatcher; }
/** * @expectedException \LogicException * @expectedExceptionMessage You must provide a UrlGeneratorInterface instance to be able to use routes. */ public function testUrlGeneratorIsRequiredToGenerateUrl() { $utils = new HttpUtils(); $utils->generateUri(new Request(), 'route_name'); }
public function start(Request $request, AuthenticationException $authenticationException = null) { $this->registerIntent($request); $this->registerRequestedScopeService->registerRequestedScope($request); return $this->httpUtils->createRedirectResponse($request, 'fos_user_security_login'); }
/** * Starts the authentication scheme. * * @param Request $request The request that resulted in an AuthenticationException * @param AuthenticationException $authException The exception that started the authentication process * * @return Response */ public function start(Request $request, AuthenticationException $authException = null) { return $this->httpUtils->createRedirectResponse($request, $this->loginPath); }
/** * @param Request $request * @return \Symfony\Component\HttpFoundation\RedirectResponse */ protected function getLogoutRedirectResponse(Request $request) { return $this->httpUtils->createRedirectResponse($request, $request->attributes->get('local_logout_path')); }
/** * @param \Symfony\Component\HttpFoundation\Request $request * @return bool */ public function supports(Request $request) { return $this->httpUtils->checkRequestPath($request, $request->attributes->get('oauth_callback_path')); }
public function checkRequestPath(Request $request, $path) { return parent::checkRequestPath($request, $this->analyzeLink($path)); }