<?php
namespace App\EventSubscriber;
use App\Entity\User;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\HttpKernel\KernelEvents;
use ApiPlatform\Core\EventListener\EventPriorities;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class TransactionFromListener implements EventSubscriberInterface
{
/**
* @var Security
*/
private $security;
/**
* ResolveMeSubscriber constructor.
* @param Security $security
*/
public function __construct(Security $security)
{
$this->security = $security;
}
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => ['putUser', EventPriorities::POST_DESERIALIZE],
];
}
public function putUser(RequestEvent $event)
{
$request = $event->getRequest();
if ('api_transactions_post_collection' !== $request->attributes->get('_route')) {
return;
}
$transaction = $request->attributes->get('data');
$user = $this->security->getUser();
if (!$user instanceof User) {
return;
}
$transaction->setUserFrom($user);
}
}