vendor/gesdinet/jwt-refresh-token-bundle/Doctrine/RefreshTokenManager.php line 45

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the GesdinetJWTRefreshTokenBundle package.
  4.  *
  5.  * (c) Gesdinet <http://www.gesdinet.com/>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Gesdinet\JWTRefreshTokenBundle\Doctrine;
  11. use DateTime;
  12. use Doctrine\Persistence\ObjectManager;
  13. use Gesdinet\JWTRefreshTokenBundle\Entity\RefreshTokenRepository;
  14. use Gesdinet\JWTRefreshTokenBundle\Model\RefreshTokenManager as BaseRefreshTokenManager;
  15. use Gesdinet\JWTRefreshTokenBundle\Model\RefreshTokenInterface;
  16. class RefreshTokenManager extends BaseRefreshTokenManager
  17. {
  18.     /**
  19.      * @var ObjectManager
  20.      */
  21.     protected $objectManager;
  22.     /**
  23.      * @var string
  24.      */
  25.     protected $class;
  26.     /**
  27.      * @var RefreshTokenRepository
  28.      */
  29.     protected $repository;
  30.     /**
  31.      * Constructor.
  32.      *
  33.      * @param string $class
  34.      */
  35.     public function __construct(ObjectManager $om$class)
  36.     {
  37.         $this->objectManager $om;
  38.         $this->repository $om->getRepository($class);
  39.         $metadata $om->getClassMetadata($class);
  40.         $this->class $metadata->getName();
  41.     }
  42.     /**
  43.      * @param string $refreshToken
  44.      *
  45.      * @return RefreshTokenInterface|null
  46.      */
  47.     public function get($refreshToken)
  48.     {
  49.         return $this->repository->findOneBy(['refreshToken' => $refreshToken]);
  50.     }
  51.     /**
  52.      * @param string $username
  53.      *
  54.      * @return RefreshTokenInterface
  55.      */
  56.     public function getLastFromUsername($username)
  57.     {
  58.         return $this->repository->findOneBy(['username' => $username], ['valid' => 'DESC']);
  59.     }
  60.     /**
  61.      * @param bool|true $andFlush
  62.      */
  63.     public function save(RefreshTokenInterface $refreshToken$andFlush true)
  64.     {
  65.         $this->objectManager->persist($refreshToken);
  66.         if ($andFlush) {
  67.             $this->objectManager->flush();
  68.         }
  69.     }
  70.     /**
  71.      * @param bool $andFlush
  72.      */
  73.     public function delete(RefreshTokenInterface $refreshToken$andFlush true)
  74.     {
  75.         $this->objectManager->remove($refreshToken);
  76.         if ($andFlush) {
  77.             $this->objectManager->flush();
  78.         }
  79.     }
  80.     /**
  81.      * @param DateTime $datetime
  82.      * @param bool     $andFlush
  83.      *
  84.      * @return RefreshTokenInterface[]
  85.      */
  86.     public function revokeAllInvalid($datetime null$andFlush true)
  87.     {
  88.         $invalidTokens $this->repository->findInvalid($datetime);
  89.         foreach ($invalidTokens as $invalidToken) {
  90.             $this->objectManager->remove($invalidToken);
  91.         }
  92.         if ($andFlush) {
  93.             $this->objectManager->flush();
  94.         }
  95.         return $invalidTokens;
  96.     }
  97.     /**
  98.      * Returns the RefreshToken fully qualified class name.
  99.      *
  100.      * @return string
  101.      */
  102.     public function getClass()
  103.     {
  104.         return $this->class;
  105.     }
  106. }