<?php
namespace App\EventSubscriber;
use App\Security\ReportMode;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
final class ReportModeSubscriber implements EventSubscriberInterface
{
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents(): array
{
return [
KernelEvents::CONTROLLER => 'onController',
KernelEvents::RESPONSE => 'onResponse',
];
}
/**
* @param ControllerEvent $event
*/
public function onController(ControllerEvent $event): void
{
$route = (string) $event->getRequest()->attributes->get('_route');
if (str_starts_with($route, 'admin_reports') || str_starts_with($route, 'admin_api_report_')) {
ReportMode::enable();
}
}
/**
* @param ResponseEvent $event
*/
public function onResponse(ResponseEvent $event): void
{
// ensure flag is reset at end of request
ReportMode::disable();
}
}