<?php
namespace CioBusinesscards\Subscriber;
use CioBusinesscards\Model\ConfigHelper;
use Shopware\Storefront\Page\Product\ProductPage;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class ResponseSubscriber implements EventSubscriberInterface
{
private ConfigHelper $configHelper;
public function __construct(ConfigHelper $configHelper)
{
$this->configHelper = $configHelper;
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::RESPONSE => 'setCustomXFrameOptions',
];
}
public function setCustomXFrameOptions(ResponseEvent $event): void
{
$request = $event->getRequest();
$response = $event->getResponse();
if ($request->getRequestUri() == '/businesscards/generate' || $request->getRequestUri() == '/businesscards/generateNamecard' || $request->getRequestUri() == '/businesscards/generateRecommendationcard') {
$response->headers->set('X-Frame-Options', 'sameorigin');
}
if (method_exists($response, 'getData')) {
if (isset($response->getData()['page'])) {
$page = $response->getData()['page'];
if ($page instanceof ProductPage) {
if ($this->configHelper->isBusinesscard($page->getProduct()) || $this->configHelper->isNameCard($page->getProduct()) || $this->configHelper->isRecommendationCard($page->getProduct())) {
$response->headers->set('X-Frame-Options', 'sameorigin');
}
}
}
}
}
}