/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
api/controllers/AuthController.php
90 строк
3 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace api\controllers; use api\components\ApiException; use api\controllers\base\BaseController; use common\forms\LoginForm; use Yii; use yii\helpers\ArrayHelper; use yii\helpers\UnsetArrayValue; /** * Авторизация * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2025 */ class AuthController extends BaseController { /** * {@inheritdoc} */ public function behaviors() { return ArrayHelper::merge(parent::behaviors(), [ 'AuthFilter' => new UnsetArrayValue(), 'AccessControl' => new UnsetArrayValue(), ]); } /** * {@inheritdoc} */ public function actions() { return ArrayHelper::merge(parent::actions(), [ 'create' => new UnsetArrayValue(), 'delete' => new UnsetArrayValue(), ]); } /** * @SWG\Post(path="/auth", * tags = {"auth"}, * summary = "Basic authentication involves sending a verified username and password with your request.", * produces = {"application/json", "application/xml"}, * @SWG\Parameter(in = "header", name = "Authorization", required = true, type = "string", description = "The Authorization header passes the API a Base64 encoded string representing your username and password values, appended to the text Basic {base64_encode(login:password)}"), * @SWG\Response(response = 200, description = "OK"), * @SWG\Response(response = 422, description = "Unprocessable entity"), * @SWG\Response(response = 500, description = "Internal Server Error") * ) * @throws \yii\base\Exception */ public function actionCreate() { Yii::$app->user->logout(); Yii::$app->session->destroy(); Yii::$app->session->regenerateID(true); /** @var LoginForm $model */ $model = Yii::createObject(LoginForm::class); $username = Yii::$app->request->getAuthUser(); $password = Yii::$app->request->getAuthPassword(); $data = [ 'login' => $username, 'password' => $password ]; if ($model->load($data, '') && $model->login()) { /** @var \common\models\User $user */ $user = Yii::$app->user->identity; return [ 'user_id' => $user->id, 'display_name' => $user->display_name, 'hub_key' => $user->guid, 'message' => 'OK' ]; } $message = implode(', ', $model->getErrorSummary(false)); $exception = new ApiException(422, $message); $exception->errors = $model->errors; throw $exception; } }