<?php
declare(strict_types=1);
namespace App\EventListener;
use App\Entity\User;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
use Symfony\Component\Security\Core\Security;
class DeletedUserListener
{
/**
* @var Security
*/
private $security;
/**
* @var UrlGeneratorInterface
*/
private $router;
/**
* @var FlashBagInterface
*/
private $flashBag;
/**
* @param Security $security
* @param UrlGeneratorInterface $router
* @param FlashBagInterface $flashBag
*/
public function __construct(Security $security, UrlGeneratorInterface $router, FlashBagInterface $flashBag)
{
$this->router = $router;
$this->security = $security;
$this->flashBag = $flashBag;
}
/**
* @param RequestEvent $event
*/
public function onKernelRequest(RequestEvent $event): void
{
// $request = $event->getRequest();
//
// if (\in_array($request->get('_route'), ['profile_account_blocked'])) {
// return;
// }
if (!$event->isMasterRequest()
|| (null === $this->security->getToken())
|| ($this->security->getToken() instanceof AnonymousToken)
|| !($this->security->getUser() instanceof User)) {
// don't do anything if it's not the master request
return;
}
/** @var User $user */
$user = $this->security->getUser();
if (!$user->isDeleted()) {
// don't do anything if users organization is active
return;
}
$this->flashBag->add(
'info',
'Twoje konto zostało usunięte, skontaktuj się z administratorem systemu E-CNC'
);
$response = new RedirectResponse($this->router->generate('user_logout'));
$event->setResponse($response);
}
}