public function onKernelController(FilterControllerEvent $event) { if ($event->getRequestType() != HttpKernelInterface::MASTER_REQUEST) { return; } if (!is_array($controller = $event->getController())) { return; } $object = new \ReflectionObject($controller[0]); $method = $object->getMethod($controller[1]); $dispatch = false; foreach ($this->reader->getMethodAnnotations($method) as $configuration) { if ($configuration instanceof Dispatch) { $dispatch = true; break; } } if ($dispatch) { $response = $this->getLegacyApplication()->handle($event->getRequest(), $event->getRequestType(), false); foreach ($this->filters as $filter) { $filter->filter($event, $response); if ($event->isPropagationStopped()) { break; } } } }
/** * Sets the cache key on the alias manager cache decorator. * * KernelEvents::CONTROLLER is used in order to be executed after routing. * * @param \Symfony\Component\HttpKernel\Event\FilterControllerEvent $event * The Event to process. */ public function onKernelController(FilterControllerEvent $event) { // Set the cache key on the alias manager cache decorator. if ($event->getRequestType() == HttpKernelInterface::MASTER_REQUEST) { $this->aliasManager->setCacheKey(rtrim($this->currentPath->getPath($event->getRequest()), '/')); } }
/** * @param FilterControllerEvent $event */ public function onKernelController(FilterControllerEvent $event) { if (HttpKernel::MASTER_REQUEST == $event->getRequestType()) { $this->linkProvider->setRequest($event->getRequest()); } return; }
/** * Determines and sets the Request format * * @param GetResponseEvent $event The event */ public function onKernelController(FilterControllerEvent $event) { $request = $event->getRequest(); /* // TODO get priorities from the controller action $action = $request->attributes->get('_controller'); $controller = $event->getController(); $priorities = */ if (empty($priorities)) { $priorities = $this->defaultPriorities; } $format = null; if (!empty($priorities)) { $format = $this->formatNegotiator->getBestFormat($request, $priorities, $this->preferExtension); } if (null === $format) { $format = $this->fallbackFormat; } if (null === $format) { if ($event->getRequestType() === HttpKernelInterface::MASTER_REQUEST) { throw new HttpException(Codes::HTTP_NOT_ACCEPTABLE, "No matching accepted Response format could be determined"); } return; } $request->setRequestFormat($format); }
public function onKernelController(FilterControllerEvent $event) { // admin menu will be rendered only when HttpKernelInterface::MASTER_REQUEST if ($event->getRequestType() == HttpKernelInterface::SUB_REQUEST) { return; } if (!$this->container->get('session')->has('admin/menu')) { $builder = new AdminMenuBuilder(); $builder->add(new AdminMenuItem(['id' => 'dashboard', 'class' => 'dashboard', 'name' => $this->translator->trans('Dashboard'), 'path' => '[menu][dashboard]', 'sort_order' => 10])); $builder->add(new AdminMenuItem(['id' => 'catalog', 'class' => 'catalog', 'name' => $this->translator->trans('Catalog'), 'path' => '[menu][catalog]', 'sort_order' => 20])); $builder->add(new AdminMenuItem(['id' => 'promotions', 'class' => 'promotions', 'name' => $this->translator->trans('Promotions'), 'path' => '[menu][promotions]', 'sort_order' => 30])); $builder->add(new AdminMenuItem(['id' => 'sales', 'class' => 'sales', 'name' => $this->translator->trans('Sales'), 'path' => '[menu][sales]', 'sort_order' => 40])); $builder->add(new AdminMenuItem(['id' => 'reports', 'class' => 'reports', 'name' => $this->translator->trans('Reports'), 'path' => '[menu][reports]', 'sort_order' => 50])); $builder->add(new AdminMenuItem(['id' => 'crm', 'class' => 'crm', 'name' => $this->translator->trans('CRM'), 'link' => '', 'path' => '[menu][crm]', 'sort_order' => 60])); $builder->add(new AdminMenuItem(['id' => 'cms', 'class' => 'cms', 'name' => $this->translator->trans('CMS'), 'path' => '[menu][cms]', 'sort_order' => 70])); $builder->add(new AdminMenuItem(['id' => 'layout', 'class' => 'layout', 'name' => $this->translator->trans('Layout settings'), 'path' => '[menu][layout]', 'sort_order' => 80])); $builder->add(new AdminMenuItem(['id' => 'integration', 'class' => 'integration', 'name' => $this->translator->trans('Integration'), 'path' => '[menu][integration]', 'sort_order' => 90])); $builder->add(new AdminMenuItem(['id' => 'configuration', 'class' => 'configuration', 'name' => $this->translator->trans('Configuration'), 'link' => '', 'path' => '[menu][configuration]', 'sort_order' => 100])); $builder->add(new AdminMenuItem(['id' => 'localization', 'class' => 'localization', 'name' => $this->translator->trans('Localization'), 'path' => '[menu][configuration][localization]', 'sort_order' => 10])); $builder->add(new AdminMenuItem(['id' => 'store_management', 'class' => 'store_management', 'name' => $this->translator->trans('Store management'), 'path' => '[menu][configuration][store_management]', 'sort_order' => 20])); $builder->add(new AdminMenuItem(['id' => 'user_management', 'name' => $this->translator->trans('User management'), 'path' => '[menu][configuration][user_management]', 'sort_order' => 30])); $adminMenuEvent = new AdminMenuInitEvent($builder); $event->getDispatcher()->dispatch(AdminMenuInitEvent::ADMIN_MENU_INIT_EVENT, $adminMenuEvent); $menu = $adminMenuEvent->getBuilder()->getMenu(); $this->container->get('session')->set('admin/menu', $menu); } }
/** * Update the user "lastActivity" on each request * * @param FilterControllerEvent $event */ public function onCoreController(FilterControllerEvent $event) { // Here we are checking that the current request is a "MASTER_REQUEST", // and ignore any // subrequest in the process (for example when // doing a render() in a twig template) if ($event->getRequestType() !== HttpKernel::MASTER_REQUEST) { return; } // We are checking a token authentification is available before using // the User if ($this->securityContext->getToken()) { $user = $this->securityContext->getToken()->getUser(); // We are using a delay during wich the user will be considered as // still active, in order to // avoid too much UPDATE in the // database // $delay = new \DateTime (); // $delay->setTimestamp (strtotime ('2 minutes ago')); // We are checking the Admin class in order to be certain we can // call "getLastActivity". // && $user->getLastActivity() < $delay) { if ($user instanceof User) { $user->isActiveNow(); $this->em->persist($user); $this->em->flush(); } } }
public function onKernelController(\Symfony\Component\HttpKernel\Event\FilterControllerEvent $event) { if ($event->getRequestType() == \Symfony\Component\HttpKernel\HttpKernelInterface::SUB_REQUEST) { return; } if ($event->getRequest()->isXmlHttpRequest()) { return; } if (null == $this->security->getToken()) { return; } $this->user = $this->security->getToken()->getUser(); if ($this->security->isGranted('ROLE_ADMIN')) { return; } $controller = $event->getController(); if (!preg_match('#FrontBundle#', get_class($controller[0]))) { return; } $this->request = $event->getRequest(); $this->trueSession = $this->request->getSession(); $this->route = $this->request->get('_route'); $this->routeParams = $this->request->get('_route_params'); if (preg_match('#admin#', $this->route) || preg_match('#tracking#', $this->route) || preg_match('#_wdt#', $this->route)) { return; } $this->initSession(); $this->initView(); }
/** * Checks if an access to a controller action is granted or not. * * This method is executed just before any controller action. * * @param FilterControllerEvent $event * @throws AccessDeniedException */ public function onKernelController(FilterControllerEvent $event) { $controller = $event->getController(); /* * $controller passed can be either a class or a Closure. This is not usual in Symfony2 but it may happen. * If it is a class, it comes in array format */ if (is_array($controller)) { list($object, $method) = $controller; $className = ClassUtils::getClass($object); $this->logger->debug(sprintf('Invoked controller "%s::%s". (%s)', $className, $method, $event->getRequestType() === HttpKernelInterface::MASTER_REQUEST ? 'MASTER_REQUEST' : 'SUB_REQUEST')); if (!$this->securityFacade->isClassMethodGranted($className, $method)) { if ($event->getRequestType() === HttpKernelInterface::MASTER_REQUEST) { throw new AccessDeniedException(sprintf('Access denied to %s::%s.', $className, $method)); } } } }
/** * @param FilterControllerEvent $event */ public function onKernelController(FilterControllerEvent $event) { if (HttpKernel::MASTER_REQUEST == $event->getRequestType()) { /** @var HelpLinkProvider $linkProvider */ $linkProvider = $this->container->get('oro_help.model.help_link_provider'); $linkProvider->setRequest($event->getRequest()); } return; }
public function registerCurrentController(FilterControllerEvent $event) { // this check is needed because in Symfony a request can perform any // number of sub-requests. See // http://symfony.com/doc/current/components/http_kernel/introduction.html#sub-requests if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { $this->twigExtension->setController($event->getController()); } }
public function onKernelController(FilterControllerEvent $event) { if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { $container = $this->container; $theme = $container->get('glory_theme.manager')->getCurrentTheme(); if ($theme) { $twigLoader = $container->get('twig.loader'); $twigLoader->prependPath($theme->getDir()); } } }
public function onKernelController(FilterControllerEvent $event) { // skip fetching locales when handling sub-request if ($event->getRequestType() == HttpKernelInterface::SUB_REQUEST) { return; } if (!$this->container->get('session')->has('admin/locales')) { $locales = $this->container->get('locale.repository')->getAvailableLocales(); $this->container->get('session')->set('admin/locales', $locales); } }
public function onKernelController(FilterControllerEvent $event) { if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { $controllers = $event->getController(); if (is_array($controllers)) { $controller = $controllers[0]; if (is_object($controller) && method_exists($controller, 'preExecute') && $event->getRequest()->getMethod() != 'OPTIONS') { $controller->preExecute($event->getRequest()); } } } }
public function authenticate(FilterControllerEvent $event) { if (HttpKernel::MASTER_REQUEST != $event->getRequestType()) { return; } $this->controller = $event->getController()[0]; $auth = $this->container->get('authUtil'); $user = $auth->getCurrentUser(); if ($user) { $this->setUserDetails($user); } }
public function onKernelController(FilterControllerEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } if ($this->tenantResolver->getStrategy() === TenantResolver::STRATEGY_TENANT_AWARE_SUBDOMAIN && false === $this->tenantResolver->isSubdomain()) { return; } $tenantId = $this->tenantResolver->getTenantId(); if ($tenantId) { $this->entityManager->getFilters()->enable('tenantAware')->setParameter('tenantId', $tenantId); } }
public function onKernelController(FilterControllerEvent $event) { if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { $controllers = $event->getController(); // контроллер должен существовать if (isset($controllers[0])) { $controller = $controllers[0]; // метод должен существовать if (method_exists($controller, 'preExecute')) { $controller->preExecute(); } } } }
public function preMethod(FilterControllerEvent $event) { if (HttpKernelInterface::MASTER_REQUEST == $event->getRequestType()) { $controller = $event->getController(); //renvoi un tableau avec un seul resultat... if (isset($controller[0])) { $controller = $controller[0]; // on re attribue le résultat à $controller if (method_exists($controller, 'preExecute')) { $controller->preExecute(); } } } }
public function onKernelController(FilterControllerEvent $event) { if ($event->getRequestType() == HttpKernelInterface::SUB_REQUEST) { return; } $request = $event->getRequest(); $session = $request->getSession(); if (!$session->has('_currency')) { $currency = $this->getLocaleCurrency($request); if (null !== $currency) { $session->set('_currency', $currency); } } }
/** * @param FilterControllerEvent $event */ public function preExecuteAutorun(FilterControllerEvent $event) { // Event catching if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { // controller catching $_controller = $event->getController(); if (isset($_controller[0])) { $controller = $_controller[0]; } // preExecute method verification if (method_exists($controller, 'preExecute')) { $controller->preExecute(); } } }
public function onCoreController(FilterControllerEvent $event) { // Récupération de l'event if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { // Récupération du controller $_controller = $event->getController(); if (isset($_controller[0])) { $controller = $_controller[0]; // On vérifie que le controller implémente la méthode preExecute if (method_exists($controller, 'preExecute')) { $controller->preExecute(); } } } }
public function onKernelController(FilterControllerEvent $event) { if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { $data = $event->getController(); $Controller = $data[0]; $interface = 'BF13\\Component\\Breadcrumb\\BreadcrumbControllerInterface'; $interfaces = class_implements($Controller); if (in_array($interface, $interfaces)) { $rootNode = $Controller->getBreadcrumbName(); $this->service->setRootNode($rootNode); $activeRoute = $event->getRequest()->get('_route'); $this->service->setActiveRoute($activeRoute); } } }
public function onKernelController(FilterControllerEvent $event) { if (!$event->getRequestType()) { return FALSE; } $controller = $event->getController(); $this->_metadata->setCurrentRoute($this->_request->get('_route')); if ($controller[0] instanceof PageInitInterface) { if (!$this->_request->isXmlHttpRequest()) { $this->_metadata->setPreviousRoute($this->_backlink->getBacklink()); $this->_backlink->setBacklink($this->_metadata->getCurrentRoute(), ["feedback", "search"]); $this->_metadata->setCurrentMetadata(); } } }
public function onKernelController(FilterControllerEvent $event) { if ($event->getRequestType() !== HttpKernelInterface::MASTER_REQUEST) { return; } $request = $event->getRequest(); // Check if controller index if (!$request->attributes->get('_controller_index', false)) { return; } // Get page from Request $page = $request->attributes->get('_page'); // Track page $this->tracker->track($page); }
/** * On each request we want to update the user's last activity datetime * * @param \Symfony\Component\HttpKernel\Event\FilterControllerEvent $event * @return void */ public function onCoreController(FilterControllerEvent $event) { if ($event->getRequestType() !== \Symfony\Component\HttpKernel\HttpKernel::MASTER_REQUEST) { return; } $user = $this->context->getToken()->getUser(); if ($user instanceof User) { //here we can update the user as necessary $user->setLastActivity(new DateTime()); $this->em->persist($user); $this->em->flush($user); //force authentication to reload current roles $this->context->getToken()->setAuthenticated(false); } }
/** * @param FilterControllerEvent $event */ public function onKernelController(FilterControllerEvent $event) { // Skip if we aren't the main request if ($event->getRequestType() != HttpKernelInterface::MASTER_REQUEST) { return; } // Skip if we are a closure if (!is_array($controller = $event->getController())) { return; } // Find the best match $annotations = $event->getRequest()->attributes->get('_x-rate-limit', array()); $rateLimit = $this->findBestMethodMatch($event->getRequest(), $annotations); // No matching annotation found if (!$rateLimit) { return; } $key = $this->getKey($event, $rateLimit, $annotations); // Ratelimit the call $rateLimitInfo = $this->rateLimitService->limitRate($key); if (!$rateLimitInfo) { // Create new rate limit entry for this call $rateLimitInfo = $this->rateLimitService->createRate($key, $rateLimit->getLimit(), $rateLimit->getPeriod()); if (!$rateLimitInfo) { // @codeCoverageIgnoreStart return; // @codeCoverageIgnoreEnd } } // Store the current rating info in the request attributes $request = $event->getRequest(); $request->attributes->set('rate_limit_info', $rateLimitInfo); // When we exceeded our limit, return a custom error response if ($rateLimitInfo->getCalls() > $rateLimitInfo->getLimit()) { // Throw an exception if configured. if ($this->getParameter('rate_response_exception')) { $class = $this->getParameter('rate_response_exception'); throw new $class($this->getParameter('rate_response_message'), $this->getParameter('rate_response_code')); } $message = $this->getParameter('rate_response_message'); $code = $this->getParameter('rate_response_code'); $event->setController(function () use($message, $code) { // @codeCoverageIgnoreStart return new Response($message, $code); // @codeCoverageIgnoreEnd }); } }
public function onKernelController(FilterControllerEvent $event) { if ($event->getRequestType() == HttpKernelInterface::MASTER_REQUEST) { $controller = $event->getController(); $className = class_exists('Doctrine\\Common\\Util\\ClassUtils') ? ClassUtils::getClass($controller[0]) : get_class($controller[0]); $object = new \ReflectionClass($className); $method = $object->getMethod($controller[1]); $configurations = array_merge($this->getConfigurations($this->annotationReader->getClassAnnotations($object)), $this->getConfigurations($this->annotationReader->getMethodAnnotations($method))); if ($configuration = @$configurations['Startplatz\\Bundle\\WordpressIntegrationBundle\\Annotation\\WordpressResponse']) { /** @var WordpressResponse $configuration */ $request = $event->getRequest(); if ($uri = $configuration->getUri()) { $targetRequest = Request::create($uri, 'GET', array(), iterator_to_array($request->cookies), array(), iterator_to_array($request->server), null); } else { $targetRequest = $request; } $request->attributes->set('_wordpressResponse', $response = $this->wordpressHttpKernel->handle($targetRequest)); $response->setContent($this->expandShortCodes($response->getContent())); if ($configuration->getCreateTwigTemplate()) { $markup = $response->getContent(); $foundBlocks = array(); $markup = preg_replace_callback('((%%|\\*\\*)([A-Z\\_]+)(%%|\\*\\*))', function ($matches) use(&$foundBlocks, $request) { $name = strtolower($matches[2]); if (isset($foundBlocks[$name])) { return "{{ block('{$name}') }}"; } else { $foundBlocks[$name] = true; if ($name == 'canonical' or $name == 'my_canonical') { $name = 'canonical'; $blockContent = str_replace(array('http://', 'https://'), '', $request->getUri()); } else { $blockContent = ''; } return "{% block {$name} %}{$blockContent}{% endblock %}"; } }, $markup); $markup = preg_replace('(<meta name="robots" content="([^"]+)"/>)', '<meta name="robots" content="{% block robots %}index,follow{% endblock %}" />', $markup); $markup = preg_replace('(<meta property="og:url" content="([^"]+)" />)', '<meta property="og:url" content="' . $request->getScheme() . '://{{ block(\'canonical\') }}" />', $markup); $markup = preg_replace('(<meta property="article:published_time" content="([^"]+)" />)', '<meta property="article:published_time" content="{% block published_time %}$1{% endblock %}" />', $markup); $markup = preg_replace('(<meta property="article:modified_time" content="([^"]+)" />)', '<meta property="article:modified_time" content="{% block modified_time %}$1{% endblock %}" />', $markup); $markup = preg_replace('(<meta property="og:updated_time" content="([^"]+)" />)', '<meta property="og:updated_time" content="{% block updated_time %}$1{% endblock %}" />', $markup); $markup = str_replace('</head>', '{% block additionalHead %}{% endblock %}</head>', $markup); $markup = str_replace('</body>', '{% block additionalBody %}{% endblock %}</body>', $markup); $request->attributes->set('_wordpressTemplate', $markup); } } } }
public function buildPageCrumbs(FilterControllerEvent $event) { if ($event->getRequestType() !== HttpKernel::MASTER_REQUEST) { return; } $request = $event->getRequest(); if ($request->attributes->has('_page')) { /* @var $page PageInterface */ $page = $request->attributes->get('_page'); while ($page->getParent() !== null && !$page->getHomepage()) { $this->breadcrumbs->unshift($page->getTitle(), $page->getRoute()); $page = $page->getParent(); } } $request->attributes->add(['_breadcrumbs' => $this->breadcrumbs]); }
/** * kernel.controller listener method * * @param FilterControllerEvent $event */ public function onKernelController(FilterControllerEvent $event) { // do this filter only if there is a matched route if (null === $event->getRequest()->attributes->get('_route')) { return; } if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { $controllers = $event->getController(); if (isset($controllers[0])) { $controller = $controllers[0]; if (method_exists($controller, 'preExecute')) { $controller->preExecute(); } } } }
public function onCoreController(FilterControllerEvent $event) { if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { $_controller = $event->getController(); if (isset($_controller[0])) { $controller = $_controller[0]; if (method_exists($controller, 'preExecute')) { $redirectUrl = $controller->preExecute($event->getRequest()); if (!is_null($redirectUrl)) { $event->setController(function () use($redirectUrl) { return new RedirectResponse($redirectUrl); }); } } } } }
public function onKernelRequest(FilterControllerEvent $event) { if (HttpKernel::MASTER_REQUEST != $event->getRequestType() || $this->securityContext->getToken() === null) { // don't do anything if it's not the master request return; } $controller = $event->getController()[0]; // We know we'll build the board list eventually so we get all of them $this->boardService->getBoards(); $board = null; if ($event->getRequest()->attributes->get('boardSlug') !== null && method_exists($controller, 'setBoard') === true) { $board = $this->pathService->getCurrentBoard(); if ($board === null) { throw $controller->createNotFoundException(); } } if ($event->getRequest()->attributes->get('topicSlug') !== null && method_exists($controller, 'setTopic') === true && $board !== null) { $topic = $this->pathService->getCurrentTopic(); if ($topic === null) { throw $controller->createNotFoundException(); } } if ($event->getRequest()->attributes->get('messageId') !== null && method_exists($controller, 'setMessage') === true) { $message = $this->pathService->getCurrentMessage(); if ($message === null) { throw $controller->createNotFoundException(); } } }