src/WebserviceBundle/Event/RequestListener.php line 48

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by Notive.
  4.  * Project: wms.p
  5.  * User: Henny Krijnen
  6.  * Date: 30/09/16
  7.  * Time: 08:41
  8.  */
  9. namespace WebserviceBundle\Event;
  10. use Doctrine\ORM\EntityManager;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  13. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
  14. use WmsBundle\Entity\User;
  15. /**
  16.  * Class RequestListener
  17.  * @package WebserviceBundle\Event
  18.  */
  19. class RequestListener
  20. {
  21.     /**
  22.      * @var TokenStorage
  23.      */
  24.     protected $tokenStorage;
  25.     /**
  26.      * @var EntityManager
  27.      */
  28.     protected $entityManager;
  29.     /**
  30.      * RequestListener constructor.
  31.      * @param TokenStorage $tokenStorage
  32.      * @param EntityManager $entityManager
  33.      */
  34.     public function __construct(TokenStorage $tokenStorageEntityManagerInterface $entityManager)
  35.     {
  36.         $this->tokenStorage $tokenStorage;
  37.         $this->em $entityManager;
  38.     }
  39.     /**
  40.      * @param GetResponseEvent $event
  41.      */
  42.     public function onRequest(GetResponseEvent $event)
  43.     {
  44.         $token $this->tokenStorage->getToken();
  45.         if ($token) {
  46.             /** @var User $user */
  47.             $user $token->getUser();
  48.             if ($user instanceof User) {
  49.                 if($user->getType() !== User::API_TYPE &&
  50.                     $user->getLastRequestAt() < (new \DateTime())->sub(new \DateInterval('PT1M'))
  51.                 ){
  52.                     $date = new \DateTime();
  53.                     $id $user->getId();
  54.                     $sql "
  55.                         UPDATE fos_user u
  56.                             SET u.last_request_at = :request
  57.                             WHERE u.id = :id";
  58.                     $stmt $this->em->getConnection()->prepare($sql);
  59.                     $stmt->execute([
  60.                         'id' => $id,
  61.                         'request' => $date->format('Y-m-d H:i:s')
  62.                     ]);
  63.                 }
  64.             }
  65.         }
  66.     }
  67. }