<?php
namespace App\EventListener;
use Gedmo\Blameable\BlameableListener;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\User\User;
class DoctrineExtensionSubscriber implements EventSubscriberInterface
{
/**
* @var BlameableListener
*/
private $blameableListener;
/**
* @var TokenStorageInterface
*/
private $tokenStorage;
public function __construct(
BlameableListener $blameableListener,
TokenStorageInterface $tokenStorage
) {
$this->blameableListener = $blameableListener;
$this->tokenStorage = $tokenStorage;
}
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => 'onKernelRequest'
];
}
public function onKernelRequest(): void
{
if (null !== $this->tokenStorage &&
null !== $this->tokenStorage->getToken() &&
true === $this->tokenStorage->getToken()->isAuthenticated()
) {
$user = $this->tokenStorage->getToken()->getUser();
if ($user instanceof User && 'anonymousOnlineBooking' !== $user->getUsername()) {
$this->blameableListener->setUserValue($this->tokenStorage->getToken()->getUser());
}
}
}
}