hasOne(OauthClient::class, ['id' => 'client_id']); } public function getAccount() { return $this->hasOne(Account::class, ['id' => 'owner_id']); } public function getScopes() { return new Set(static::getDb()->getSchema()->getRawTableName(static::tableName()), $this->id, 'scopes'); } public function beforeDelete() { if (!$result = parent::beforeDelete()) { return $result; } $this->getScopes()->delete(); /** @var \api\components\OAuth2\Storage\RefreshTokenStorage $refreshTokensStorage */ $refreshTokensStorage = Yii::$app->oauth->getAuthServer()->getRefreshTokenStorage(); $refreshTokensSet = $refreshTokensStorage->sessionHash($this->id); foreach ($refreshTokensSet->members() as $refreshTokenId) { $refreshTokensStorage->delete($refreshTokensStorage->get($refreshTokenId)); } $refreshTokensSet->delete(); return true; } }