src/Controller/Security/UserAction.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Security;
  3. use ApiPlatform\Core\Exception\ResourceClassNotSupportedException;
  4. use App\Handler\Security\UserHandler;
  5. use App\Model\Security\UserInfo;
  6. use App\Service\Cache\Exception\UnableToSaveKeyException;
  7. use App\V4\Messenger\Message\ResynchronizeBadgesRequest;
  8. use Psr\Cache\CacheException;
  9. use Psr\Cache\InvalidArgumentException;
  10. use ReflectionException;
  11. use Symfony\Component\Messenger\MessageBusInterface;
  12. use Symfony\Component\Serializer\Exception\ExceptionInterface;
  13. use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface;
  14. use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface;
  15. use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface;
  16. use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface;
  17. use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
  18. class UserAction
  19. {
  20.     /**
  21.      * @var UserHandler
  22.      */
  23.     private $userHandler;
  24.     /**
  25.      * @var MessageBusInterface
  26.      */
  27.     private $bus;
  28.     /**
  29.      * @param UserHandler         $userHandler
  30.      * @param MessageBusInterface $bus
  31.      */
  32.     public function __construct(UserHandler $userHandlerMessageBusInterface $bus)
  33.     {
  34.         $this->userHandler $userHandler;
  35.         $this->bus $bus;
  36.     }
  37.     /**
  38.      * @param $data
  39.      *
  40.      * @return UserInfo
  41.      *
  42.      * @throws ClientExceptionInterface
  43.      * @throws DecodingExceptionInterface
  44.      * @throws RedirectionExceptionInterface
  45.      * @throws ReflectionException
  46.      * @throws ServerExceptionInterface
  47.      * @throws TransportExceptionInterface
  48.      * @throws UnableToSaveKeyException
  49.      * @throws CacheException
  50.      * @throws InvalidArgumentException
  51.      * @throws ExceptionInterface
  52.      * @throws ResourceClassNotSupportedException
  53.      */
  54.     public function __invoke($data): UserInfo
  55.     {
  56.         $userInfo $this->userHandler->handle($data);
  57.         $this->bus->dispatch((new ResynchronizeBadgesRequest())->setCustomerId($userInfo->getCustomer()->getId()));
  58.         return $userInfo;
  59.     }
  60. }