<?php
namespace App\EventSubscriber;
use App\Entity\Company;
use App\Entity\User;
use App\Service\Utils\Constante\AbonnementConst;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Error\SyntaxError;
class AbonnementSubcriber implements EventSubscriberInterface
{
private TokenStorageInterface $tokenStorage;
public function __construct(TokenStorageInterface $tokenStorage)
{
$this->tokenStorage = $tokenStorage;
}
/**
* @param RequestEvent $event
* @return void
* @throws LoaderError
* @throws RuntimeError
* @throws SyntaxError
*/
public function onKernelRequest(ControllerEvent $event)
{
if (!$event->isMainRequest()) {
// don't do anything if it's not the master request
return;
}
if(!$this->tokenStorage->getToken() instanceof AnonymousToken and $this->tokenStorage->getToken() !== null){
/* @var $userCompany Company*/
$userCompany = $this->tokenStorage->getToken()->getUser()->getCompany();
//abonnement suspendu = déco
if($userCompany->getStatus() === AbonnementConst::STATUS_SUSPENDED){
$this->tokenStorage->setToken(null);
}
}
}
public static function getSubscribedEvents()
{
return [
KernelEvents::CONTROLLER=> [
['onKernelRequest',10]
],
];
}
}