From 433f560f4871bb776ddc4f5b77194ad85ecb0624 Mon Sep 17 00:00:00 2001 From: ErickSkrauch Date: Thu, 18 Aug 2016 00:57:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20=D1=83?= =?UTF-8?q?=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D0=BB=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=20OauthController?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controllers/OauthController.php | 38 +++++++++++++++++------------ 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/api/controllers/OauthController.php b/api/controllers/OauthController.php index bcf224b..a2d4fab 100644 --- a/api/controllers/OauthController.php +++ b/api/controllers/OauthController.php @@ -44,20 +44,6 @@ class OauthController extends Controller { ]; } - /** - * @return \League\OAuth2\Server\AuthorizationServer - */ - protected function getServer() { - return Yii::$app->oauth->authServer; - } - - /** - * @return \League\OAuth2\Server\Grant\AuthCodeGrant - */ - protected function getGrantType() { - return $this->getServer()->getGrantType('authorization_code'); - } - /** * Запрос, который должен проверить переданные параметры oAuth авторизации * и сформировать ответ для нашего приложения на фронте @@ -181,6 +167,14 @@ class OauthController extends Controller { return $response; } + /** + * Этот метод нужен за тем, что \League\OAuth2\Server\AuthorizationServer не предоставляет + * метода для проверки, можно ли выдавать refresh_token для пришедшего токена. Он просто + * выдаёт refresh_token, если этот grant присутствует в конфигурации сервера. Так что чтобы + * как-то решить эту проблему, мы не включаем RefreshTokenGrant в базовую конфигурацию сервера, + * а подключаем его только в том случае, если у auth_token есть право на рефреш или если это + * и есть запрос на refresh токена. + */ private function attachRefreshTokenGrantIfNeedle() { $grantType = Yii::$app->request->post('grant_type'); if ($grantType === 'authorization_code' && Yii::$app->request->post('code')) { @@ -210,7 +204,7 @@ class OauthController extends Controller { * * @return array */ - private function buildSuccessResponse($queryParams, OauthClient $clientModel, $scopes) { + private function buildSuccessResponse(array $queryParams, OauthClient $clientModel, array $scopes) { return [ 'success' => true, // Возвращаем только те ключи, которые имеют реальное отношение к oAuth параметрам @@ -251,4 +245,18 @@ class OauthController extends Controller { return $response; } + /** + * @return \League\OAuth2\Server\AuthorizationServer + */ + private function getServer() { + return Yii::$app->oauth->authServer; + } + + /** + * @return \League\OAuth2\Server\Grant\AuthCodeGrant + */ + private function getGrantType() { + return $this->getServer()->getGrantType('authorization_code'); + } + }