<?php namespace api\components\OAuth2\Entities; use api\components\OAuth2\Storage\SessionStorage; use ErrorException; use League\OAuth2\Server\Entity\SessionEntity as OriginalSessionEntity; class RefreshTokenEntity extends \League\OAuth2\Server\Entity\RefreshTokenEntity { private $sessionId; public function isExpired(): bool { return false; } public function getSession(): SessionEntity { if ($this->session instanceof SessionEntity) { return $this->session; } $sessionStorage = $this->server->getSessionStorage(); if (!$sessionStorage instanceof SessionStorage) { throw new ErrorException('SessionStorage must be instance of ' . SessionStorage::class); } return $sessionStorage->getById($this->sessionId); } public function getSessionId(): int { return $this->sessionId; } public function setSession(OriginalSessionEntity $session): self { parent::setSession($session); $this->setSessionId($session->getId()); return $this; } public function setSessionId(int $sessionId): void { $this->sessionId = $sessionId; } }