. // }}} /** * OAuth2 Client * * @package GNUsocial * * @author Hugo Sales * @copyright 2022 Free Software Foundation, Inc http://www.fsf.org * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ namespace Plugin\OAuth2\Entity; use App\Core\Entity; use DateTimeInterface; use League\OAuth2\Server\Entities\AccessTokenEntityInterface; use League\OAuth2\Server\Entities\RefreshTokenEntityInterface; class RefreshToken extends Entity implements RefreshTokenEntityInterface { // {{{ Autocode // @codeCoverageIgnoreStart private string $id; private DateTimeInterface $expiry; private ?string $access_token_id = null; private bool $revoked; private DateTimeInterface $created; public function setId(string $id): self { $this->id = mb_substr($id, 0, 64); return $this; } public function getId(): string { return $this->id; } public function setExpiry(DateTimeInterface $expiry): self { $this->expiry = $expiry; return $this; } public function getExpiry(): DateTimeInterface { return $this->expiry; } public function setAccessTokenId(?string $access_token_id): self { $this->access_token_id = \is_null($access_token_id) ? null : mb_substr($access_token_id, 0, 64); return $this; } public function getAccessTokenId(): ?string { return $this->access_token_id; } public function setRevoked(bool $revoked): self { $this->revoked = $revoked; return $this; } public function getRevoked(): bool { return $this->revoked; } public function setCreated(DateTimeInterface $created): self { $this->created = $created; return $this; } public function getCreated(): DateTimeInterface { return $this->created; } // @codeCoverageIgnoreEnd // }}} Autocode /** * Get the token's identifier. * * @return string */ public function getIdentifier() { return $this->getId(); } /** * Set the token's identifier. */ public function setIdentifier($identifier) { $this->setId($identifier); } /** * Get the token's expiry date time. * * @return DateTimeImmutable */ public function getExpiryDateTime() { return $this->getExpiry(); } /** * Set the date time when the token expires. * * @param DateTimeImmutable $dateTime */ public function setExpiryDateTime(\DateTimeImmutable $dateTime) { $this->setExpiry($dateTime); } /** * Set the access token that the refresh token was associated with. */ public function setAccessToken(AccessTokenEntityInterface $accessToken) { $this->setAccessTokenId($accessToken->getIdentifier()); } /** * Get the access token that the refresh token was originally associated with. * * @return AccessTokenEntityInterface */ public function getAccessToken() { return (new Repository\AccessToken)->getAccessTokenEntity($this->getAccessTokenId()); } public static function schemaDef(): array { return [ 'name' => 'oauth2_refresh_token', 'fields' => [ 'id' => ['type' => 'char', 'length' => 64, 'not null' => true, 'description' => 'identifier for this token'], 'expiry' => ['type' => 'datetime', 'not null' => true, 'description' => 'when this token expires'], 'access_token_id' => ['type' => 'char', 'length' => 64, 'foreign key' => true, 'description' => 'Actor foreign key'], 'revoked' => ['type' => 'bool', 'not null' => true, 'foreign key' => true, 'description' => 'Whether this token is revoked'], 'created' => ['type' => 'datetime', 'not null' => true, 'default' => 'CURRENT_TIMESTAMP', 'description' => 'date this record was created'], ], 'primary key' => ['id'], ]; } }