<?php declare(strict_types=1);
namespace Sq\Entity\Schema\ORM;
use Doctrine\ORM\Mapping as ORM;
use Sq\Service\Repository\ORM\RefreshTokenRepository;
#[ORM\Entity(repositoryClass: RefreshTokenRepository::class)]
#[ORM\Table(name: 'auth_refresh_tokens')]
class RefreshToken
{
/**
*
* @var int|null
*/
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
#[ORM\Column(name: 'art_id', type: 'integer', nullable: false, options: ['unsigned' => true])]
private $id;
/**
*
* @var User
*/
#[ORM\ManyToOne(targetEntity: User::class)]
#[ORM\JoinColumn(name: 'art_u_id', referencedColumnName: 'u_id', nullable: false)]
private $user;
/**
* @var string
*/
#[ORM\Column(name: 'art_refresh_token', type: 'string', length: 160, nullable: false)]
private $token;
/**
* @var \DateTimeInterface
*/
#[ORM\Column(name: 'art_expires_at', type: 'datetime', nullable: false)]
private $expiresAt;
/**
* @var \DateTimeInterface
*/
#[ORM\Column(name: 'art_issued_at', type: 'datetime', nullable: false)]
private $issuedAt;
public function __construct(User $user, string $refreshToken, \DateTimeInterface $expiresAt)
{
$this->user = $user;
$this->token = $refreshToken;
$this->expiresAt = clone $expiresAt;
$this->issuedAt = new \DateTimeImmutable;
}
public function getId(): ?int
{
return $this->id;
}
public function getUser(): User
{
return $this->user;
}
public function setUser(User $user): self
{
$this->user = $user;
return $this;
}
public function getToken(): string
{
return $this->token;
}
public function setToken(string $token): self
{
$this->token = $token;
return $this;
}
public function getExpiresAt(): \DateTimeInterface
{
return clone $this->expiresAt;
}
public function setExpiresAt(\DateTimeInterface $expiresAt): self
{
$this->expiresAt = clone $expiresAt;
return $this;
}
public function getIssuedAt(): \DateTimeInterface
{
return clone $this->issuedAt;
}
}