<?php/* * This file is part of the GesdinetJWTRefreshTokenBundle package. * * (c) Gesdinet <http://www.gesdinet.com/> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */namespace Gesdinet\JWTRefreshTokenBundle\Entity;use Symfony\Component\Validator\Constraints as Assert;use Gesdinet\JWTRefreshTokenBundle\Model\RefreshTokenInterface;/** * Abstract Refresh Token. */abstract class AbstractRefreshToken implements RefreshTokenInterface{ /** * @var string * * @Assert\NotBlank() */ private $refreshToken; /** * @var string * * @Assert\NotBlank() */ private $username; /** * @var \DateTime * * @Assert\NotBlank() */ private $valid; /** * {@inheritdoc} */ abstract public function getId(); /** * Set refreshToken. * * @param string $refreshToken * * @return AbstractRefreshToken */ public function setRefreshToken($refreshToken = null) { $this->refreshToken = null === $refreshToken ? bin2hex(openssl_random_pseudo_bytes(64)) : $refreshToken; return $this; } /** * Get refreshToken. * * @return string */ public function getRefreshToken() { return $this->refreshToken; } /** * Set valid. * * @param \DateTime $valid * * @return AbstractRefreshToken */ public function setValid($valid) { $this->valid = $valid; return $this; } /** * Get valid. * * @return \DateTime */ public function getValid() { return $this->valid; } /** * Set username. * * @param string $username * * @return AbstractRefreshToken */ public function setUsername($username) { $this->username = $username; return $this; } /** * Get username. * * @return string */ public function getUsername() { return $this->username; } /** * Check if is a valid refresh token. * * @return bool */ public function isValid() { return $this->valid >= new \DateTime(); } /** * @return string Refresh Token */ public function __toString() { return $this->getRefreshToken(); }}