E::REFRESH_TOKEN_REQUIRED], ['refresh_token', 'validateRefreshToken'], ]; } public function validateRefreshToken() { if (!$this->hasErrors()) { /** @var AccountSession|null $token */ if ($this->getSession() === null) { $this->addError('refresh_token', E::REFRESH_TOKEN_NOT_EXISTS); } } } /** * @return \api\components\User\AuthenticationResult|bool */ public function renew() { if (!$this->validate()) { return false; } /** @var \api\components\User\Component $component */ $component = Yii::$app->user; return $component->renewJwtAuthenticationToken($this->getSession()); } /** * @return AccountSession|null */ public function getSession() { if ($this->session === null) { $this->session = AccountSession::findOne(['refresh_token' => $this->refresh_token]); } return $this->session; } }