src/Eccube/EventListener/IpAddrListener.php line 40

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 Eccube\Common\EccubeConfig;
  14. use Eccube\Request\Context;
  15. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  16. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  17. use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
  18. class IpAddrListener implements EventSubscriberInterface
  19. {
  20.     /**
  21.      * @var EccubeConfig
  22.      */
  23.     protected $eccubeConfig;
  24.     /**
  25.      * @var Context
  26.      */
  27.     protected $requestContext;
  28.     public function __construct(EccubeConfig $eccubeConfigContext $requestContext)
  29.     {
  30.         $this->eccubeConfig $eccubeConfig;
  31.         $this->requestContext $requestContext;
  32.     }
  33.     public function onKernelRequest(GetResponseEvent $event)
  34.     {
  35.         if (!$event->isMasterRequest()) {
  36.             return;
  37.         }
  38.         $allowHosts $this->eccubeConfig['eccube_admin_allow_hosts'];
  39.         if (empty($allowHosts)) {
  40.             return;
  41.         }
  42.         if ($this->requestContext->isAdmin()) {
  43.             if (array_search($event->getRequest()->getClientIp(), $allowHosts) === false) {
  44.                 throw new AccessDeniedHttpException();
  45.             }
  46.         }
  47.     }
  48.     public static function getSubscribedEvents()
  49.     {
  50.         return [
  51.             'kernel.request' => ['onKernelRequest'512],
  52.         ];
  53.     }
  54. }