This method can read the client host name from the "X-Forwarded-Host" header
when trusted proxies were set via "setTrustedProxies()".
The "X-Forwarded-Host" header must contain the client host name.
If your reverse proxy uses a different header name than "X-Forwarded-Host",
configure it via "setTrustedHeaderName()" with the "client-host" key.
public function matches(Request $request) { if (!$this->language) { throw new \LogicException('Unable to match the request as the expression language is not available.'); } return $this->language->evaluate($this->expression, array('request' => $request, 'method' => $request->getMethod(), 'path' => rawurldecode($request->getPathInfo()), 'host' => $request->getHost(), 'ip' => $request->getClientIp(), 'attributes' => $request->attributes->all())) && parent::matches($request); }
public function matchesHost() { if (null === ($host = $this->map->getHost())) { return true; } if (!$this->map->getHostIsRegexPattern()) { return $host === $this->request->getHost(); } return !$this->map->isHostRegexPatternNegate() == preg_match('#' . $host . '#', $this->request->getHost(), $this->patternMatches); }
public function contains(Request $request, $modifier) { $baseHost = $this->getBaseHost(); if (!$baseHost) { return false; } $host = $request->getHost(); if ($host === $this->getBaseHost()) { return false; } return $this->hostContainsModifier($modifier, $request->getHost()); }
/** * Retrieves the page list based on slugs. * Also checks the hierarchy of the different pages. * * @param array $slugsArray * * @return Page[] */ protected function getPages(array $slugsArray = array()) { /** @var Page[] $pages */ $pages = $this->getDoctrine()->getManager()->getRepository('OrbitaleCmsBundle:Page')->findFrontPages($slugsArray, $this->request->getHost(), $this->request->getLocale()); if (!count($pages) || count($slugsArray) && count($pages) !== count($slugsArray)) { if (count($slugsArray)) { $msg = 'Page not found'; } else { $msg = 'No homepage has been configured. Please check your existing pages or create a homepage in your application.'; } throw $this->createNotFoundException($msg); } return $pages; }
/** * Get a good key that varies on method, host, path info etc etc. * * @param Request $request * * @return string */ private function createCacheKey(Request $request) { $key = sprintf('route:%s:%s:%s', $request->getMethod(), $request->getHost(), $request->getPathInfo()); // This might be optional //$key.=':'.$this->implodeRecursive('|', $request->query->all()); return $key; }
public function logoutAction(Request $request) { $response = new Response(); $response->headers->clearCookie($this->get('vkapikey_authenticator')->getCookieId(), '/', '.' . $request->getHost()); $response->send(); return $this->redirect($this->generateUrl('site_homepage')); }
public function __construct($routes, Request $request, EventDispatcher $dispatcher, ControllerResolver $resolver) { $this->deflRes = new NodeResponse(); $this->context = new RequestContext($request->getBaseUrl(), $request->getMethod(), $request->getHost(), $request->getScheme(), $request->getPort(), $request->getPort()); $this->matcher = new UrlMatcher($routes, $this->context); parent::__construct($dispatcher, $resolver); }
/** * {@inheritdoc} */ public function getHost() { if ($this->host !== null) { return $this->host; } return parent::getHost(); }
/** * {@inheritDoc} */ public function resolveLocale(Request $request) { if ($this->hostMap && isset($this->hostMap[$host = $request->getHost()])) { return $this->hostMap[$host]; } return null; }
public function githubAction(Application $app, Request $request) { $clientID = getenv('GITHUB_API_KEY'); $clientSecret = getenv('GITHUB_API_SECRET'); $code = $request->query->get('code'); $redirectUri = $request->getScheme() . '://' . $request->getHost(); if (80 != $request->getPort()) { $redirectUri .= ':' . $request->getPort(); } $redirectUri .= '/auth/github'; $provider = new Github(['clientId' => $clientID, 'clientSecret' => $clientSecret, 'redirectUri' => $redirectUri, 'scopes' => ['user:email']]); if (empty($code)) { $authUrl = $provider->getAuthorizationUrl(); $app['session']->set('oauth2state', $provider->state); return $app->redirect($authUrl); } else { $token = $provider->getAccessToken('authorization_code', ['code' => $code]); $userDetails = $provider->getUserDetails($token); try { $user = $app['user.manager']->fetchUserByGithubUid($userDetails->uid); } catch (UserNotFoundException $exception) { $email = null; foreach ($provider->getUserEmails($token) as $providerEmail) { if ($providerEmail->primary) { $email = $providerEmail->email; break; } } $user = $app['user.manager']->createUser(['email' => $email, 'roles' => ['ROLE_USER'], 'name' => $userDetails->name, 'githubUid' => $userDetails->uid]); $app['user.manager']->saveUser($user); } $app['session']->set('user', $user); return $app->redirect($app['url_generator']->generate('account.profile')); } }
protected function initializeRequestAttributes(Request $request, $master) { if ($master) { // set the context even if the parsing does not need to be done // to have correct link generation $this->router->setContext(array('base_url' => $request->getBaseUrl(), 'method' => $request->getMethod(), 'host' => $request->getHost(), 'port' => $request->getPort(), 'is_secure' => $request->isSecure())); } if ($request->attributes->has('_controller')) { // routing is already done return; } // add attributes based on the path info (routing) try { $parameters = $this->router->match($request->getPathInfo()); if (null !== $this->logger) { $this->logger->info(sprintf('Matched route "%s" (parameters: %s)', $parameters['_route'], json_encode($parameters))); } $request->attributes->add($parameters); if ($locale = $request->attributes->get('_locale')) { $request->getSession()->setLocale($locale); } } catch (NotFoundException $e) { $message = sprintf('No route found for "%s %s"', $request->getMethod(), $request->getPathInfo()); if (null !== $this->logger) { $this->logger->err($message); } throw new NotFoundHttpException($message, $e); } catch (MethodNotAllowedException $e) { $message = sprintf('No route found for "%s %s": Method Not Allowed (Allow: %s)', $request->getMethod(), $request->getPathInfo(), strtoupper(implode(', ', $e->getAllowedMethods()))); if (null !== $this->logger) { $this->logger->err($message); } throw new MethodNotAllowedHttpException($e->getAllowedMethods(), $message, $e); } }
/** * @Route("/facebook", name="facebook") */ public function index2Action(Request $request) { $host = 'http://' . $request->getHost(); if ($this->container->get('kernel')->getEnvironment() == 'dev') { $host .= '/app_dev.php'; } #validar que session este inicializado if (!session_id()) { session_start(); } $fb = new Facebook(['app_id' => '460859080767262', 'app_secret' => '69915f389cdfa981be8dfb98276cbaf2', 'default_graph_version' => 'v2.5']); $helper = $fb->getRedirectLoginHelper(); $permissions = ['email']; // Optional permissions $loginUrl = $helper->getLoginUrl("{$host}/fb-callback", $permissions); $enlaceFacebook = '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook!</a>'; #obtener datos si esta logeado $user = null; if (!empty($_SESSION['fb_access_token'])) { $fb = new Facebook(['app_id' => '460859080767262', 'app_secret' => '69915f389cdfa981be8dfb98276cbaf2', 'default_graph_version' => 'v2.5']); try { // Returns a `Facebook\FacebookResponse` object $response = $fb->get('/me?fields=id,name,email', $_SESSION['fb_access_token']); } catch (FacebookResponseException $e) { echo 'Graph returned an error: ' . $e->getMessage(); exit; } catch (FacebookSDKException $e) { echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; } $user = $response->getGraphUser(); } // replace this example code with whatever you need return $this->render('facebook/index.html.twig', array('base_dir' => realpath($this->container->getParameter('kernel.root_dir') . '/..'), 'enlaceFacebook' => $enlaceFacebook, 'user' => $user)); }
/** * @Template() * @Route("/packages.json", name="packages", defaults={"_format" = "json"}) */ public function packagesAction(Request $req) { // fallback if any of the dumped files exist $rootJson = $this->container->getParameter('kernel.root_dir') . '/../web/packages_root.json'; if (file_exists($rootJson)) { return new Response(file_get_contents($rootJson)); } $rootJson = $this->container->getParameter('kernel.root_dir') . '/../web/packages.json'; if (file_exists($rootJson)) { return new Response(file_get_contents($rootJson)); } if ($req->getHost() === 'packagist.org') { $this->get('logger')->alert('packages.json is missing and the fallback controller is being hit'); return new Response('Horrible misconfiguration or the dumper script messed up', 404); } $em = $this->get('doctrine')->getManager(); gc_enable(); $packages = $em->getRepository('Packagist\\WebBundle\\Entity\\Package')->getFullPackages(); $notifyUrl = $this->generateUrl('track_download', array('name' => 'VND/PKG')); $data = array('notify' => str_replace('VND/PKG', '%package%', $notifyUrl), 'packages' => array()); foreach ($packages as $package) { $versions = array(); foreach ($package->getVersions() as $version) { $versions[$version->getVersion()] = $version->toArray(); $em->detach($version); } $data['packages'][$package->getName()] = $versions; $em->detach($package); } unset($versions, $package, $packages); $response = new Response(json_encode($data), 200); $response->setSharedMaxAge(120); return $response; }
/** * Chooses a language for a request * * @return $response or null **/ public function switchLocaleForRequest(Request $request) { $session = $request->getSession(); $parts = explode('.', $request->getHost()); if (count($parts) === 3) { $locale = $parts[0]; if ($locale == $session->getLocale()) { return; } if ($this->manager->isAvailable($locale)) { $session->setLocale($locale); $preferred = $request->getPreferredLanguage($this->manager->getAvailableLanguageCodes()); if ($preferred != $locale) { $session->setFlash('locale_change_adjust', $preferred); } else { $session->setFlash('locale_change_contribute', $locale); } return; } $host = $parts[1] . '.' . $parts[2]; } else { $host = $parts[0] . '.' . $parts[1]; } $locale = $request->getPreferredLanguage($this->manager->getAvailableLanguageCodes()); $url = sprintf('http://%s.%s%s', $locale, $host, $request->getRequestUri()); $response = new RedirectResponse($url); $preferredLanguage = $this->getRequestPreferredLanguage($request); if ($preferredLanguage && $locale != $preferredLanguage) { $allLanguageCodes = array_keys($this->manager->getLanguages()); if (in_array($preferredLanguage, $allLanguageCodes)) { $session->setFlash('locale_missing', $preferredLanguage); } } return $response; }
/** * @Route("/sign", name="_sign") */ public function signAction(Request $request) { if (null == $request->get('url')) { return new Response(''); } //$url = urldecode($request->get('url')); $appId = $this->container->getParameter('wechat_appid'); $appSecret = $this->container->getParameter('wechat_secret'); $wechat = new Wechat\Wechat($appId, $appSecret); $wx = (array) $wechat->getSignPackage(urldecode($request->get('url'))); //var_dump($wx); $wx['shareTitle'] = '谁来一起coffe time?和互联网大咖面对面,机会千载难逢!'; $wx['shareDesc'] = '谁来一起coffe time?和互联网大咖面对面,机会千载难逢!'; $wx['shareUrl'] = 'http://' . $request->getHost() . '/'; $wx['imgUrl'] = 'http://' . $request->getHost() . '/images/share.jpg'; return new Response(json_encode($wx)); }
/** * @Route("/sign", name="_sign") */ public function signAction(Request $request) { if (null == $request->get('url')) { return new Response(''); } //$url = urldecode($request->get('url')); $appId = $this->container->getParameter('wechat_appid'); $appSecret = $this->container->getParameter('wechat_secret'); $wechat = new Wechat\Wechat($appId, $appSecret); $wx = (array) $wechat->getSignPackage(urldecode($request->get('url'))); //var_dump($wx); $wx['shareTitle'] = '你有一个来自 NET-A-PORTER 颇特女士的下午茶邀请'; $wx['shareDesc'] = '邀请全城摩登客开启一段舌尖与视觉碰撞的时尚之旅'; $wx['shareUrl'] = 'http://' . $request->getHost() . '/'; $wx['imgUrl'] = 'http://' . $request->getHost() . '/images/share.jpg'; return new Response(json_encode($wx)); }
public function isUrlLocal($link) { if (!$this->request) { return false; } $parts = parse_url($link); $isLocal = true; if (!empty($parts['host']) && $parts['host'] !== $this->request->getHost()) { $isLocal = false; } elseif (!empty($parts['port']) && $parts['port'] !== $this->request->getPort()) { $isLocal = false; } elseif (!empty($parts['scheme']) && $this->request->isSecure() && $parts['scheme'] !== 'https') { // going out from secure connection to insecure page on same domain is not local $isLocal = false; } return $isLocal; }
public function fromRequest(Request $request) { $this->setBaseUrl($request->getBaseUrl()); $this->setMethod($request->getMethod()); $this->setHost($request->getHost()); $this->setScheme($request->getScheme()); $this->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort()); $this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort); }
protected function init(Request $request) { $this->request = $request; $this->baseUrl = 'http://' . $this->request->getHost() . $this->request->getBaseUrl() . $this->request->getPathInfo(); $this->manager = $this->get('doctrine_mongodb')->getManager(); $this->repository = $this->manager->getRepository('AppBundle:UserEvent'); $this->queryBuilder = $this->repository->createQueryBuilder(); $this->dbCount = $this->queryBuilder->getQuery()->execute()->count(); }
/** * Set the current language, always based on a 2-letter code * * This handles the following situations: * * 1. Set the lang param via the request: example.org?lang=nl * 2. If the host name part of the FQDN, e.g. nl.example.org, matches one of the configured languages set the language to "nl" * 3. If the routes are prefixed by a language code; example.org/nl/pages * 4. Attempts to fetch a valid lang from the locale, "nl_NL" becomes "nl" * 5. Uses the default that was set in the config file of this extension * * Whatever value was set, it can always be overridden in s twig template {% set lang = 'de' %} * * @param Request $request */ public function before(Request $request) { $lang = $request->query->get('lang'); if (!$lang && $this->isAllowedLanguage($this->extractLanguage($request->getHost()))) { $lang = $this->extractLanguage($request->getHost()); } if (!$lang && $this->isAllowedLanguage(substr($request->getRequestUri(), 1, 2))) { $lang = substr($request->getRequestUri(), 1, 2); } if (!$this->isValidLanguage($lang) && $this->isAllowedLanguage(substr($request->getLocale(), 0, 2))) { $lang = substr($request->getLocale(), 0, 2); } if (!$this->isValidLanguage($lang)) { $lang = $this->config['default']; } $this->app['session']->set('lang', $lang); $this->setCurrentLanguage($lang); }
/** * News. Film at 11. * * @param Request $request * * @return \Bolt\Response\BoltResponse */ public function dashboardNews(Request $request) { $news = $this->getNews($request->getHost()); // One 'alert' and one 'info' max. Regular info-items can be disabled, // but Alerts can't. $context = ['alert' => empty($news['alert']) ? null : $news['alert'], 'information' => empty($news['information']) ? null : $news['information'], 'error' => empty($news['error']) ? null : $news['error'], 'disable' => $this->getOption('general/backend/news/disable')]; $response = $this->render('@bolt/components/panel-news.twig', ['context' => $context]); $response->setSharedMaxAge(3600)->setPublic(); return $response; }
/** * Returns Subdomain String for Request * @param Request $request * @return string */ protected function getSubdomain(Request $request) { $host = $request->getHost(); $parts = explode('.', $host); $subdomain = 'admin'; if (count($parts) === 3) { $subdomain = $parts[0]; } return $subdomain; }
/** * Sets all needed values from the request. * * @param Request $request A request to get values from. */ public function setRequest(Request $request) { $this->setScheme($request->getScheme()); $this->setHost($request->getHost()); $this->setBasePath($request->getBasePath()); if ($request->isSecure()) { $this->setHttpsPort($request->getPort()); } else { $this->setHttpPort($request->getPort()); } }
protected function getEnvironment(Request $request, $environments) { $host = $this->removeWWW($request->getHost()); foreach ($environments as $key => $environment) { if ($this->removeWWW($environment['host']) == $host) { return $key; } } return false; //throw new \Exception("No hay ningún environment definido para este host: $host"); }
/** * @param Request $request * * @throws \Exception * * @return string * * resolves the locale from httpHost or host */ public function resolveFromDomain(Request $request) { $host = $request->getHost(); $httpHost = $request->getHttpHost(); if (array_key_exists($host, $this->localeDomainConfig)) { return $this->localeDomainConfig[$host]; } elseif (array_key_exists($httpHost, $this->localeDomainConfig)) { return $this->localeDomainConfig[$httpHost]; } return $request->getLocale(); }
function apply(Request $request, ConfigurationInterface $configuration) { // On récupère l'entité Site correspondante $site = $this->repository->findOneByHostname($request->getHost()); // On définit ensuite un attribut de requête du nom de $conf->getName() // et contenant notre entité Site $request->attributes->set($configuration->getName(), $site); // On retourne true pour qu'aucun autre ParamConverter ne soit utilisé sur cet argument // Je pense notamment au ParamConverter de Doctrine qui risque de vouloir s'appliquer ! return true; }
/** * Handles the request when none other action was found. * * @access public * * @param string $uri The URI to handle * * @throws FrontControllerException */ public function defaultAction($uri = null, $sendResponse = true) { if (null === $this->application) { throw new FrontControllerException('A valid BackBee application is required.', FrontControllerException::INTERNAL_ERROR); } if (false === $this->application->getContainer()->has('site')) { throw new FrontControllerException('A BackBee\\Site instance is required.', FrontControllerException::INTERNAL_ERROR); } $site = $this->application->getContainer()->get('site'); preg_match('/(.*)(\\.[' . $this->url_extension . ']+)/', $uri, $matches); if ('_root_' !== $uri && '/' !== $uri[strlen($uri) - 1] && 0 === count($matches) && true === $this->force_url_extension || 0 < count($matches) && true === isset($matches[2]) && $site->getDefaultExtension() !== $matches[2]) { throw new FrontControllerException(sprintf('The URL `%s` can not be found.', $this->getRouteCollection()->getUri($uri)), FrontControllerException::NOT_FOUND); } $uri = preg_replace('/(.*)\\.' . $this->url_extension . '?$/i', '$1', $uri); $redirect_page = null !== $this->application->getRequest()->get('bb5-redirect', null) ? 'false' !== $this->application->getRequest()->get('bb5-redirect') : true; if ('_root_' == $uri) { $page = $this->application->getEntityManager()->getRepository('BackBee\\NestedNode\\Page')->getRoot($site); } else { $page = $this->application->getEntityManager()->getRepository('BackBee\\NestedNode\\Page')->findOneBy(array('_site' => $site, '_url' => '/' . $uri, '_state' => Page::getUndeletedStates())); } if (null !== $page && false === $page->isOnline()) { $page = null === $this->application->getBBUserToken() ? null : $page; } if (null === $page) { throw new FrontControllerException(sprintf('The URL `%s` can not be found.', $this->request->getHost() . '/' . $uri), FrontControllerException::NOT_FOUND); } if (null !== ($redirect = $page->getRedirect()) && $page->getUseUrlRedirect()) { if (null === $this->application->getBBUserToken() || null !== $this->application->getBBUserToken() && true === $redirect_page) { $redirect = $this->application->getRenderer()->getUri($redirect); $response = new RedirectResponse($redirect, 301, ['Cache-Control' => 'no-store, no-cache, must-revalidate', 'Expires' => 'Thu, 01 Jan 1970 00:00:00 GMT']); $this->send($response); $this->application->stop(); } } try { $this->application->info(sprintf('Handling URL request `%s`.', $uri)); $event = new PageFilterEvent($this, $this->application->getRequest(), self::MASTER_REQUEST, $page); $this->application->getEventDispatcher()->dispatch('application.page', $event); if (null !== $this->getRequest()->get('bb5-mode')) { $response = new Response($this->application->getRenderer()->render($page, $this->getRequest()->get('bb5-mode'))); } else { $response = new Response($this->application->getRenderer()->render($page)); } if ($sendResponse) { $this->send($response); } else { return $response; } } catch (FrontControllerException $fe) { throw $fe; } catch (\Exception $e) { throw new FrontControllerException(sprintf('An error occured while rendering URL `%s`.', $this->request->getHost() . '/' . $uri), FrontControllerException::INTERNAL_ERROR, $e); } }
/** * Updates the RequestContext info based on a HttpFoundation Request. * * @param Request $request A Request instance */ public function fromRequest(Request $request) { $this->setBaseUrl($request->getBaseUrl()); $this->setPathInfo($request->getPathInfo()); $this->setMethod($request->getMethod()); $this->setHost($request->getHost()); $this->setScheme($request->getScheme()); $this->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort()); $this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort); $this->setQueryString($request->server->get('QUERY_STRING', '')); }
/** * {@inheritdoc} */ public function analyze(Request $request) { if ($request->attributes->has('_sulu')) { return; } $attributes = new RequestAttributes(['host' => $request->getHost(), 'scheme' => $request->getScheme()]); foreach ($this->requestProcessors as $requestProcessor) { $attributes = $attributes->merge($requestProcessor->process($request, $attributes)); } $request->attributes->set('_sulu', $attributes); }
/** * @param Request $request * @return Response * @throws \Exception * @throws \Twig_Error */ public function runAction(Request $request) { // Опредиление если от радатчика необходима картинка if (preg_match('/imgg\\./', $request->getHost())) { return $this->forward('AppBundle:Servicer:image'); } $servicer = $this->get('servicer'); $template = "AppBundle::{$servicer->getType()}_pv{$servicer->getProtocolVersion()}.html.twig"; $teasers = $servicer->getTeasers(); return new Response($this->get('templating')->render($template, ['teasers' => $teasers, 'method' => $servicer->getMethod()]), 200, ['Content-Type' => 'application/x-javascript; charset=utf-8']); }