src/Juki/Bundle/AppBundle/EventListener/ResponseSubscriber.php line 59

Open in your IDE?
  1. <?php
  2. namespace Juki\Bundle\AppBundle\EventListener;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Hitso\Bundle\CommonBundle\Helper\Request\RequestHelper;
  5. use Hitso\Bundle\SeoBundle\Entity\SeoPage;
  6. use Hitso\Bundle\SeoBundle\Service\SeoPagesManager;
  7. use Symfony\Cmf\Bundle\SeoBundle\SeoPresentationInterface;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  10. use Symfony\Component\HttpKernel\KernelEvents;
  11. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  12. class ResponseSubscriber implements EventSubscriberInterface
  13. {
  14.     /**
  15.      * @var SeoPresentationInterface
  16.      */
  17.     private $seoPresentation;
  18.     /**
  19.      * @var string The key to look up the content in the request attributes
  20.      */
  21.     private $seoPagesManager;
  22.     /**
  23.      * @var EntityManagerInterface
  24.      */
  25.     private $entityManager;
  26.     /**
  27.      * @var array
  28.      */
  29.     private $seoPages;
  30.     private $requestHelper;
  31.     public function __construct(
  32.         SeoPresentationInterface $seoPresentation,
  33.         EntityManagerInterface $entityManager,
  34.         SeoPagesManager $seoPagesManager,
  35.         RequestHelper $requestHelper
  36.     ) {
  37.         $this->seoPresentation $seoPresentation;
  38.         $this->entityManager   $entityManager;
  39.         $this->seoPagesManager $seoPagesManager;
  40.         $this->requestHelper   $requestHelper;
  41.     }
  42.     public static function getSubscribedEvents()
  43.     {
  44. //        return [];
  45.         return [
  46.             KernelEvents::RESPONSE => ['onKernelResponse'0],
  47.         ];
  48.     }
  49.     public function onKernelResponse(ResponseEvent $event)
  50.     {
  51.         $request $event->getRequest();
  52.         $site $request->get('_site'null);
  53.         if ($site !== 'admin') {
  54.             $response $event->getResponse();
  55.             // Policy generator - https://report-uri.com/home/generate
  56. //            $policy = "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.googletagmanager.com *.googleapis.com unpkg.com *.google-analytics.com; script-src-elem; script-src-attr; style-src 'self' 'unsafe-inline' *.googleapis.com; style-src-elem; style-src-attr; img-src 'self' data: *.gstatic.com *.googleapis.com *.google.com *.google-analytics.com *.ytimg.com; font-src 'self' *.gstatic.com; connect-src *.google-analytics.com; media-src; object-src; prefetch-src; child-src; frame-src 'self' youtube.com www.youtube.com youtu.be *.novitus.pl; worker-src; frame-ancestors; form-action; base-uri; manifest-src; plugin-types; report-uri; report-to";
  57.             $policies = [];
  58.             $policies[] = "default-src 'self'";
  59.             $policies[] = "script-src 'self' 'unsafe-inline' 'unsafe-eval' *.googletagmanager.com *.googleapis.com unpkg.com *.google-analytics.com *.google.com *.gstatic.com";
  60.             $policies[] = "connect-src 'self' *.googleapis.com *.google-analytics.com";
  61.             $policies[] = "style-src 'self' 'unsafe-inline' *.googleapis.com";
  62.             $policies[] = "img-src 'self' blob: data: *.gstatic.com *.googleapis.com *.google.com *.google-analytics.com *.ytimg.com";
  63.             $policies[] = "font-src 'self' *.gstatic.com";
  64.             $policies[] = "frame-src 'self' youtube.com www.youtube.com youtu.be *.novitus.pl *.google.com";
  65.             $response->headers->set('Content-Security-Policy'implode('; '$policies));
  66.             $response->headers->set('Strict-Transport-Security''max-age=2592000; includeSubDomains');
  67.             $response->headers->set('X-Content-Type-Options''nosniff');
  68.             $response->headers->set('X-XSS-Protection''1; mode=block');
  69.         }
  70.     }
  71. }