scopes; $this->scopes = array_filter($this->scopes, function(ScopeEntityInterface $scope): bool { return $scope->getIdentifier() !== PublicScopeRepository::OFFLINE_ACCESS; }); $token = Yii::$app->tokensFactory->createForOAuthClient($this); $this->scopes = $scopes; return (string)$token; } public function setPrivateKey(CryptKeyInterface $privateKey): void { // We use a general-purpose component to build JWT tokens, so there is no need to keep the key } public function getExpiryDateTime(): DateTimeImmutable { // TODO: extend token life depending on scopes list return $this->parentGetExpiryDateTime(); } }