src/Eccube/EventListener/ForwardOnlyListener.php line 33

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.ec-cube.co.jp/
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Eccube\EventListener;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  15. use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
  16. use Symfony\Component\HttpKernel\KernelEvents;
  17. /**
  18.  * Check to ForwardOnly annotation.
  19.  *
  20.  * @author Kentaro Ohkouchi
  21.  */
  22. class ForwardOnlyListener implements EventSubscriberInterface
  23. {
  24.     /**
  25.      * Kernel Controller listener callback.
  26.      *
  27.      * @param FilterControllerEvent $event
  28.      */
  29.     public function onController(ControllerEvent $event)
  30.     {
  31.         if (!$event->isMainRequest()) {
  32.             return;
  33.         }
  34.         if (!is_array($event->getController())) {
  35.             return;
  36.         }
  37.         $request $event->getRequest();
  38.         $attributes $request->attributes;
  39.         $forwardOnly $attributes->has('_forward_only');
  40.         if ($forwardOnly) {
  41.             $message sprintf('%s is Forward Only'$attributes->get('_controller'));
  42.             throw new AccessDeniedHttpException($message);
  43.         }
  44.     }
  45.     /**
  46.      * Return the events to subscribe to.
  47.      *
  48.      * @return array
  49.      */
  50.     public static function getSubscribedEvents()
  51.     {
  52.         return [
  53.             KernelEvents::CONTROLLER => 'onController',
  54.         ];
  55.     }
  56. }