From 9104b870a76cb69fd47aacef3c3bc1817c25a46b Mon Sep 17 00:00:00 2001 From: iIronside Date: Fri, 23 Dec 2022 17:40:43 +0300 Subject: [PATCH] update login method in api --- docs/api/user.md | 75 ++++++++----------- .../api/controllers/UserController.php | 31 ++++---- frontend/modules/api/models/LoginForm.php | 3 +- 3 files changed, 46 insertions(+), 63 deletions(-) diff --git a/docs/api/user.md b/docs/api/user.md index fc89766..7e92b37 100644 --- a/docs/api/user.md +++ b/docs/api/user.md @@ -13,24 +13,23 @@ - get-user-card + login - Данные пользователя + Аторизация пользователя -## Данные пользователя +## Аторизация пользователя + +POST: `https://guild.craft-group.xyz/api/user/login` -`https://guild.craft-group.xyz/api/user-card/get-user-card?user_id=1` -

- Параметры: -

+ + + +
- Параметры + Параметры
+ * - обязательные
Значение @@ -38,33 +37,37 @@
- user_id + username* - Id пользователя + Логин пользователя(адресс электронной почты пользователя) +
+ password* + + Пароль пользователя

- Возвращает объект Пользователь.
- Каждый объект Пользователь имеет такой вид: + Пример возвращаемых данных:

```json5 { - "fio": "Тест менеджер для апи запроса", - "photo": null, - "gender": 1, - "level": 2, - "years_of_exp": null, - "specification": null, - "position_name": "Должность 1" + "access_token": "RKZIA06yVbIkcbzdD7szVE5nnbRuxISV", + "access_token_expired_at": "2022-12-30", + "user_id": 1, + "card_id": 1 } ```

- Параметры: + Возвращаемые параметры:

@@ -77,50 +80,34 @@ - - - - - - - -
- fio + access_token - ФИО + токен доступа
- photo + access_token_expired_at - Ссылка на фото + дата истечения срока действия токена доступа
- gender + id - Пол + id пользователя
- level + card_id - Уровень -
- years_of_exp - - Лет опыта -
- position_name - - Должность + id профиля пользователя (при отсутствии профиля будет возвращено NULL)
diff --git a/frontend/modules/api/controllers/UserController.php b/frontend/modules/api/controllers/UserController.php index c40fa1a..8901ce3 100755 --- a/frontend/modules/api/controllers/UserController.php +++ b/frontend/modules/api/controllers/UserController.php @@ -4,16 +4,12 @@ namespace frontend\modules\api\controllers; use common\behaviors\GsCors; -use common\classes\Debug; use common\models\User; use frontend\modules\api\models\LoginForm; use Yii; -use yii\filters\auth\CompositeAuth; -use yii\filters\auth\HttpBearerAuth; use yii\filters\ContentNegotiator; -use yii\rest\ActiveController; use yii\helpers\ArrayHelper; -use yii\filters\auth\QueryParamAuth; +use yii\rest\ActiveController; use yii\web\BadRequestHttpException; use yii\web\Response; @@ -30,12 +26,6 @@ class UserController extends ActiveController 'application/json' => Response::FORMAT_JSON, ], ], -// 'authenticator' => [ -// 'class' => CompositeAuth::class, -// 'authMethods' => [ -// HttpBearerAuth::class, -// ], -// ], 'corsFilter' => [ 'class' => GsCors::class, 'cors' => [ @@ -52,15 +42,21 @@ class UserController extends ActiveController ]); } - public function actions() + public function actions(): array { - $action = parent::actions(); // TODO: Change the autogenerated stub - unset($action['index']); - unset($action['create']); - unset($action['update']); - unset($action['delete']); + $actions = parent::actions(); + unset($actions['index']); + unset($actions['create']); + unset($actions['update']); + unset($actions['delete']); + return $actions; } + protected function verbs(){ + return [ + 'login' => ['POST'] + ]; + } public function actionLogin() { @@ -70,6 +66,7 @@ class UserController extends ActiveController 'access_token' => $model->login(), 'access_token_expired_at' => $model->getUser()->getTokenExpiredAt(), 'id' => $model->getUser()->id, + 'card_id' => $model->getUser()->userCard->id ?? null, ]; } else { throw new BadRequestHttpException(json_encode($model->errors)); diff --git a/frontend/modules/api/models/LoginForm.php b/frontend/modules/api/models/LoginForm.php index 3e06a42..561e516 100755 --- a/frontend/modules/api/models/LoginForm.php +++ b/frontend/modules/api/models/LoginForm.php @@ -47,7 +47,6 @@ class LoginForm extends Model public function login() { if ($this->validate()) { - //return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0); if ($this->getUser()) { $access_token = $this->_user->generateAccessToken(); $this->_user->access_token_expired_at = date('Y-m-d', time() + static::EXPIRE_TIME); @@ -59,7 +58,7 @@ class LoginForm extends Model return false; } - public function getUser() + public function getUser(): ?User { if ($this->_user === null) { $this->_user = User::findByUsername($this->username);