src/EventSubscriber/AdminPermissionListener.php line 48

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Controller\AdminPermissionController;
  4. use App\Controller\MainController;
  5. use App\Service\Storage\AdminSession;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpFoundation\RedirectResponse;
  8. use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent;
  9. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  10. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  11. use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
  12. use Symfony\Component\HttpKernel\KernelEvents;
  13. class AdminPermissionListener implements EventSubscriberInterface
  14. {
  15.     /** @var AdminSession */
  16.     private $adminSession;
  17.     public function __construct(AdminSession $adminSession)
  18.     {
  19.         $this->adminSession $adminSession;
  20.     }
  21.     public function onKernelController(ControllerEvent $event)
  22.     {
  23.         $controller $event->getController();
  24.         if (is_array($controller)) {
  25.             $controller $controller[0];
  26.         }
  27.         /*if ($controller instanceof AdminPermissionController || $controller instanceof MainController) {
  28.             //check_white_ip_list
  29.             if (!$this->adminSession->isTrustedIP($event->getRequest()->getClientIp()))
  30.             {
  31.                 header('Location: https://google.com/');
  32.                 exit;
  33.             }
  34.         }*/
  35.         if ($controller instanceof AdminPermissionController) {
  36.             //check_route permission
  37.             if (!$this->adminSession->checkPermissions($event->getRequest()) && $this->adminSession->isLogged()) {
  38.                 throw new AccessDeniedHttpException('No permission');
  39.             }
  40.         }
  41.     }
  42.     public function onKernelView(ControllerArgumentsEvent $event)
  43.     {
  44.         return;
  45.         $controller $event->getController();
  46.         if (is_array($controller)) {
  47.             $controller $controller[0];
  48.         }
  49.         if ($controller instanceof AdminPermissionController) {
  50.         }
  51.         return;
  52.     }
  53.     public function onKernelResponse(ResponseEvent $event)
  54.     {
  55.         return;
  56.         // check to see if onKernelController marked this as a token "auth'ed" request
  57.         if (!$token $event->getRequest()->attributes->get('auth_token')) {
  58.             return;
  59.         }
  60.         $response $event->getResponse();
  61.         // create a hash and set it as a response header
  62.         $hash sha1($response->getContent().$token);
  63.         $response->headers->set('X-CONTENT-HASH'$hash);
  64.     }
  65.     public static function getSubscribedEvents()
  66.     {
  67.         return [
  68.             KernelEvents::CONTROLLER => 'onKernelController',
  69.             KernelEvents::CONTROLLER_ARGUMENTS => 'onKernelView',
  70.             KernelEvents::RESPONSE => 'onKernelResponse',
  71.         ];
  72.     }
  73. }