<?php
namespace App\EventSubscriber;
use App\Daikin\FrontendBundle\Controller\FillingSecurityController;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpFoundation\Response;
use Twig\Environment;
final class ControllerBlockSubscriber implements EventSubscriberInterface
{
/** @var class-string[] Controller-Klassen, die blockiert werden sollen */
private array $blockedControllers = [
FillingSecurityController::class
];
public function __construct(protected Environment $environment)
{
}
public static function getSubscribedEvents(): array
{
return [KernelEvents::CONTROLLER => 'onController'];
}
public function onController(ControllerEvent $event): void
{
$controller = $event->getController();
if (!\is_array($controller)) {
return;
}
$controllerObject = $controller[0];
foreach ($this->blockedControllers as $fqcn) {
if ($controllerObject instanceof $fqcn) {
// Hinweis-Response zurückgeben (hier 501 - Not Implemented)
$event->setController(function () {
return new Response(
$this->environment->render('@DaikinFrontend/ahuFrontend/index.html.twig'),
501 // alternativ: 503 (Service Unavailable) oder 410 (Gone)
);
});
return;
}
}
}
}