src/EventListener/RequestListener.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Config;
  4. use App\Services\Aws\S3;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface as TokenStorage;
  7. class RequestListener
  8. {
  9. private $awsComponentsS3;
  10. private $tokenStorage;
  11. public function __construct(TokenStorage $tokenStorage, S3 $awsComponentsS3)
  12. {
  13. $this->awsComponentsS3 = $awsComponentsS3;
  14. $this->tokenStorage = $tokenStorage;
  15. }
  16. public function onKernelRequest(RequestEvent $event)
  17. {
  18. if ($event->isMainRequest()) {
  19. try {
  20. if ($event->getRequest()->files && sizeof($event->getRequest()->files)) {
  21. $date = new \Datetime('now');
  22. $route = $event->getRequest()->get('_route') ?? null;
  23. foreach ($event->getRequest()->files as $key => $value) {
  24. $userEmail = $this->tokenStorage->getToken() && !is_string($this->tokenStorage->getToken()->getUser()) ? $this->tokenStorage->getToken()->getUser()->getEmail() : null;
  25. $fileKey = Config::S3_MAFO_UPLOADS_DIRECTORY . '/' . $date->format('c') . '_' . $userEmail . '_' . $route . '_' . $value->getClientOriginalName();
  26. $this->awsComponentsS3->uploadFileToS3($value, $fileKey);
  27. }
  28. return;
  29. }
  30. } catch (\Exception $e) {
  31. }
  32. }
  33. }
  34. }