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\RequestEvent;
  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(RequestEvent $event)
  34.     {
  35.         if (!$event->isMainRequest()) {
  36.             return;
  37.         }
  38.         if (!$this->requestContext->isAdmin()) {
  39.             return;
  40.         }
  41.         // IPアドレス許可リストを確認
  42.         $allowHosts $this->eccubeConfig['eccube_admin_allow_hosts'];
  43.         if (!empty($allowHosts) && array_search($event->getRequest()->getClientIp(), $allowHosts) === false) {
  44.             throw new AccessDeniedHttpException();
  45.         }
  46.         // IPアドレス拒否リストを確認
  47.         $denyHosts $this->eccubeConfig['eccube_admin_deny_hosts'];
  48.         if (array_search($event->getRequest()->getClientIp(), $denyHosts) !== false) {
  49.             throw new AccessDeniedHttpException();
  50.         }
  51.     }
  52.     public static function getSubscribedEvents()
  53.     {
  54.         return [
  55.             'kernel.request' => ['onKernelRequest'512],
  56.         ];
  57.     }
  58. }