<?php
namespace App\Handler;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class MaintenanceHandler
{
private $container;
private $tokenStorage;
public function __construct(ContainerInterface $container, TokenStorageInterface $tokenStorage)
{
$this->container = $container;
$this->tokenStorage = $tokenStorage;
}
public function onKernelRequest(RequestEvent $event)
{
//$maintenanceUntil = $this->container->hasParameter('underMaintenanceUntil') ? $this->container->getParameter('underMaintenanceUntil') : false;
$maintenance = $this->container->hasParameter('maintenance') ? $this->container->getParameter('maintenance') : false;
//$test = $this->container->get('security.token_storage');
//$debug = in_array($this->container->get('kernel')->getEnvironment(), array('test', 'dev'));
//if ($maintenance && !$debug) {
if ($maintenance) {
try {
$user = $this->tokenStorage->getToken()->getUser();
$isSuperAdmin = $user->getUserRole() == 'ROLE_SUPER_ADMIN' ? true : false;
if (!$isSuperAdmin) {
$engine = $this->container->get('twig');
$content = $engine->render('maintenance.html.twig');
$event->setResponse(new Response($content, 503));
$event->stopPropagation();
}
} catch (\Throwable $th) {
//qui ci entra quando non esiste il token di autenticazione, se non esiste vado avanti, perché si mostra il login
//$event->stopPropagation();
}
}
}
}