src/Subscriber/DownloadTokenSubscriber.php line 50

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Subscriber;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. /**
  9. * Class DownloadTokenSubscriber
  10. *
  11. * @package App\Subscriber
  12. */
  13. class DownloadTokenSubscriber implements EventSubscriberInterface
  14. {
  15. /**
  16. *
  17. */
  18. public const SESSION_KEY_DOWNLOAD_TOKEN = 'downloadToken';
  19. private SessionInterface $session;
  20. /**
  21. * DownloadTokenSubscriber constructor.
  22. *
  23. * @param SessionInterface $session
  24. */
  25. public function __construct(SessionInterface $session)
  26. {
  27. $this->session = $session;
  28. }
  29. /**
  30. * @return string[]
  31. */
  32. public static function getSubscribedEvents(): array
  33. {
  34. return [
  35. KernelEvents::REQUEST => 'onKernelRequest'
  36. ];
  37. }
  38. /**
  39. * @param RequestEvent $event
  40. * @return void
  41. */
  42. public function onKernelRequest(RequestEvent $event): void
  43. {
  44. $request = $event->getRequest();
  45. $downloadToken = $request->query->get('downloadToken');
  46. if ($downloadToken) {
  47. $this->session->set(self::SESSION_KEY_DOWNLOAD_TOKEN, $downloadToken);
  48. }
  49. }
  50. }