src/Database/Domain/Entity/User/UserAccessToken.php line 14

Open in your IDE?
  1. <?php
  2. namespace App\Database\Domain\Entity\User;
  3. use App\Database\Domain\Entity\AbstractEntity;
  4. use App\Infrastructure\Util\Identifier;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Symfony\Component\Security\Core\User\UserInterface;
  7. use Symfony\Component\Validator\Constraints as Assert;
  8. /**
  9.  * @ORM\Entity(repositoryClass="App\Database\Domain\Repository\AccessTokenRepository")
  10.  */
  11. class UserAccessToken extends AbstractEntity
  12. {
  13.     /**
  14.      * @Assert\NotBlank()
  15.      *
  16.      * @ORM\Column(type="string", nullable=false)
  17.      */
  18.     private string $token;
  19.     /**
  20.      * @ORM\ManyToOne(targetEntity="App\Database\Domain\Entity\User\User")
  21.      *
  22.      * @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
  23.      */
  24.     private UserInterface $user;
  25.     /**
  26.      * @ORM\Column(type="datetime_immutable", nullable=false)
  27.      */
  28.     private \DateTimeInterface $expiresAt;
  29.     public function __construct(
  30.         string $id,
  31.         string $token,
  32.         UserInterface $user,
  33.         \DateTimeInterface $expiresAt
  34.     ) {
  35.         $this->id $id;
  36.         $this->token $token;
  37.         $this->user $user;
  38.         $this->expiresAt $expiresAt;
  39.     }
  40.     public function getToken(): string
  41.     {
  42.         return $this->token;
  43.     }
  44.     public function setToken(string $token): self
  45.     {
  46.         $this->token $token;
  47.         return $this;
  48.     }
  49.     public function getUser(): User
  50.     {
  51.         return $this->user;
  52.     }
  53.     public function setUser(User $user): self
  54.     {
  55.         $this->user $user;
  56.         return $this;
  57.     }
  58.     public function getExpiresAt(): \DateTimeInterface
  59.     {
  60.         return $this->expiresAt;
  61.     }
  62.     public function extendExpires(\DateTimeInterface $dateTime)
  63.     {
  64.         $this->expiresAt $dateTime;
  65.     }
  66.     public function isValid()
  67.     {
  68.         return $this->getExpiresAt()->getTimestamp() > (new \DateTimeImmutable('now'))->getTimestamp();
  69.     }
  70.     public static function twoMonths(UserInterface $user): self
  71.     {
  72.         return new self(Identifier::generate(),
  73.             bin2hex(random_bytes(24)), $user, new \DateTimeImmutable('now + 2 month'));
  74.     }
  75. }