117 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
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\ContentNegotiator;
 | 
						|
use yii\helpers\ArrayHelper;
 | 
						|
use yii\rest\ActiveController;
 | 
						|
use yii\web\BadRequestHttpException;
 | 
						|
use yii\web\Response;
 | 
						|
 | 
						|
class UserController extends ApiController
 | 
						|
{
 | 
						|
    public $modelClass = User::class;
 | 
						|
 | 
						|
    public function behaviors()
 | 
						|
    {
 | 
						|
        $behaviors = parent::behaviors();
 | 
						|
        if($this->action->id == "login"){
 | 
						|
            unset($behaviors['authenticator']);
 | 
						|
        }
 | 
						|
 | 
						|
        return $behaviors;
 | 
						|
//        return ArrayHelper::merge(parent::behaviors(), [
 | 
						|
//            [
 | 
						|
//                'class' => ContentNegotiator::class,
 | 
						|
//                'formats' => [
 | 
						|
//                    'application/json' => Response::FORMAT_JSON,
 | 
						|
//                ],
 | 
						|
//            ],
 | 
						|
//            'corsFilter' => [
 | 
						|
//                'class' => GsCors::class,
 | 
						|
//                'cors' => [
 | 
						|
//                    'Origin' => ['*'],
 | 
						|
//                    //'Access-Control-Allow-Credentials' => true,
 | 
						|
//                    'Access-Control-Allow-Headers' => [
 | 
						|
//                        'Access-Control-Allow-Origin',
 | 
						|
//                        'Content-Type',
 | 
						|
//                        'Access-Control-Allow-Headers',
 | 
						|
//                        'Authorization',
 | 
						|
//                        'X-Requested-With'
 | 
						|
//                    ],
 | 
						|
//                ]
 | 
						|
//            ],
 | 
						|
//        ]);
 | 
						|
    }
 | 
						|
 | 
						|
    public function actions()
 | 
						|
    {
 | 
						|
        $actions = parent::actions();
 | 
						|
        unset($actions['index']);
 | 
						|
        unset($actions['create']);
 | 
						|
        unset($actions['update']);
 | 
						|
        unset($actions['delete']);
 | 
						|
    }
 | 
						|
 | 
						|
//    protected function verbs(){
 | 
						|
//        return [
 | 
						|
//            'login' => ['POST']
 | 
						|
//        ];
 | 
						|
//    }
 | 
						|
 | 
						|
    public function actionLogin()
 | 
						|
    {
 | 
						|
        $model = new LoginForm();
 | 
						|
        if ($model->load(Yii::$app->getRequest()->getBodyParams(), '') && $model->login()) {
 | 
						|
            /** @var User $user */
 | 
						|
            $user = $model->getUser();
 | 
						|
            return [
 | 
						|
                'access_token' => $model->login(),
 | 
						|
                'access_token_expired_at' => $model->getUser()->getTokenExpiredAt(),
 | 
						|
                'id' => $user->id,
 | 
						|
                'status' => $user->userCard->status ?? null,
 | 
						|
                'card_id' => $user->userCard->id ?? null,
 | 
						|
            ];
 | 
						|
        } else {
 | 
						|
            throw new BadRequestHttpException(json_encode($model->errors));
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     *
 | 
						|
     * @OA\Get(path="/user/me",
 | 
						|
     *   summary="Получить данные пользователя",
 | 
						|
     *   description="Метод для получения данныех пользователя",
 | 
						|
     *   security={
 | 
						|
     *     {"bearerAuth": {}}
 | 
						|
     *   },
 | 
						|
     *   tags={"User"},
 | 
						|
     *   @OA\Response(
 | 
						|
     *     response=200,
 | 
						|
     *     description="Возвращает данные пользователя",
 | 
						|
     *     @OA\MediaType(
 | 
						|
     *         mediaType="application/json",
 | 
						|
     *     ),
 | 
						|
     *   ),
 | 
						|
     * )
 | 
						|
     *
 | 
						|
     * @return \frontend\modules\api\models\User
 | 
						|
     * @throws BadRequestHttpException
 | 
						|
     */
 | 
						|
    public function actionMe(): \frontend\modules\api\models\User
 | 
						|
    {
 | 
						|
        $user = \frontend\modules\api\models\User::findOne(Yii::$app->user->id);
 | 
						|
        if (!$user){
 | 
						|
            throw new BadRequestHttpException("User not found");
 | 
						|
        }
 | 
						|
 | 
						|
        return $user;
 | 
						|
    }
 | 
						|
}
 |