<?php
namespace frontend\modules\rest\controllers;
use frontend\modules\calendar\classes\response\Response;
use frontend\modules\projects\models\StructureEl;
use frontend\modules\rest\forms\AssignTokenForm;
use frontend\modules\rest\forms\LoginForm;
use frontend\modules\rest\forms\ResetPasswordFrom;
use yii\filters\auth\HttpBearerAuth;
use yii\rest\Controller;
use yii;
use frontend\models\SignupForm;
use yii\web\UploadedFile;
class AuthController extends Controller
{
public function behaviors()
{
$behaviors['corsFilter'] = [
'class' => \yii\filters\Cors::className()
];
$behaviors['authenticator'] = [
'class' => HttpBearerAuth::className(),
'except'=>['login','OPTIONS']
];
return $behaviors;
}
public function beforeAction($action)
{
Yii::$app->response->format = yii\web\Response::FORMAT_JSON;
return parent::beforeAction($action);
}
public function actionLogin()
{
Yii::$app->response->format = yii\web\Response::FORMAT_JSON;
$model = new LoginForm();
$model->username = Yii::$app->request->post('username');
$model->password = Yii::$app->request->post('password');
if ( $model->login() ) {
return Yii::$app->user->identity->auth_key;
}
return $model->getErrors();
}
public function actionGetUserInfo(){
Yii::$app->response->format = yii\web\Response::FORMAT_JSON;
$profile = Yii::$app->user->identity->profile;
Yii::$app->response->statusCode = 200;
return [
'firstName' => $profile->second_name,
'surName' => $profile->first_name,
'fatherName' => $profile->family,
'fio' => $profile->fioinic
];
}
public function actionLogout()
{
$user = Yii::$app->user->identity;
$user->hash_create_time = NULL;
$user->auth_key = '';
$user->save();
return true;
}
public function actionChangePassword(){
$form = new ResetPasswordFrom();
$form->load(Yii::$app->request->post(),'');
if($form->validate()){
$form->reset();
return [
'status'=>1
];
}
return [
'status'=>0,
'errors'=>$form->getErrorSummary(true)
];
}
public function actionAssignToken(){
$form = new AssignTokenForm();
$form->load(Yii::$app->request->post(),'');
if($form->validate()){
$form->assign();
return [
'status'=>1
];
}
return [
'status'=>0,
'errors'=>$form->getErrorSummary(true)
];
}
/**
*
@return array
*/
public function actionUpdateUserprofile() {
Yii::$app->response->format = yii\web\Response::FORMAT_JSON;
$model = SignupForm::createSignFormByUserId(Yii::$app->user->identity->id);
if ($model->load(Yii::$app->request->post())){
$model->imageFiles = UploadedFile::getInstances($model, 'imageFiles');
if($model->updateUserprofile(false) !== null) {
return [
'status' => 1
];
} else {
return [
'status'=>0,
'errors'=>'Ошибка при сохранении данных!'
];
};
}
}
}