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;
             }
         }
     }
 }
Example #2
0
 /**
  * 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);
     }
 }
Example #6
0
 /**
  * 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;
 }
Example #10
0
 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();
             }
         }
     }
 }
Example #18
0
 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);
         }
     }
 }
Example #19
0
 /**
  * @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();
             }
         }
     }
 }
Example #21
0
 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);
         }
     }
 }
Example #22
0
 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();
         }
     }
 }
Example #23
0
 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);
 }
Example #24
0
 /**
  * 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);
             }
         }
     }
 }
Example #27
0
 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);
                     });
                 }
             }
         }
     }
 }
Example #30
-1
 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();
         }
     }
 }