RegisterController.php 2.69 KB
<?php

namespace frontend\modules\user\controllers;

use Yii;
use yii\web\Response;
use yii\widgets\ActiveForm;
use yii\filters\AccessControl;
//
use frontend\components\BaseController;
use frontend\modules\user\models\form\RegisterForm;

/**
 * Class LoginController
 *
 * @package frontend\modules\user\controllers
 * @author FilamentV <vortex.filament@gmail.com>
 * @copyright (c), Thread
 */
class RegisterController extends BaseController
{

    protected $model = RegisterForm::class;
    public $title = "Register";
    public $defaultAction = 'index';
    public $layout = "@app/layouts/user-register";

    /**
     * @return array
     */
    public function behaviors()
    {
        return [
            'AccessControl' => [
                'class' => AccessControl::class,
                'rules' => [
                    [
                        'allow' => true,
                        'actions' => ['index', 'validate'],
                        'roles' => ['?'],
                    ],
                    [
                        'allow' => false,
                    ],
                ],
            ],
        ];
    }

    /**
     *
     * @return string
     */
    public function actionIndex()
    {
        if (!Yii::$app->getUser()->isGuest) {
            return $this->redirect(['/']);
        }
        /** @var $model RegisterForm */
        $model = new $this->model;
        $model->setScenario('register');
        if ($model->load(Yii::$app->getRequest()->post()) && $model->validate()) {
            $status = $model->addUser();
            $model->setScenario('signIn');
            if ($status){
                Yii::$app->getSession()->addFlash('login', Yii::t('user', 'add new members'));
            }
            return $this->redirect(['/']);
            /*if ($status === true && $model->getAutoLoginAfterRegister() === true && $model->login()) {

            }*/
            /*if ($status === true) {
                return $this->redirect(['/user/login/index']);
            }*/
        } else {
            $model->getErrors();
        }
        return $this->render('index', [
            'model' => $model,
            'module' => $this->module,
        ]);
    }

    /**
     *
     * @return string
     */
    public function actionValidate()
    {
        if (!\Yii::$app->getUser()->getIsGuest()) {
            return $this->goHome();
        }
        /** @var RegisterForm $model */
        $model = new $this->model;
        $model->setScenario('register');
        if (Yii::$app->getRequest()->isAjax && $model->load(Yii::$app->getRequest()->post())) {
            Yii::$app->getResponse()->format = Response::FORMAT_JSON;
            return ActiveForm::validate($model);
        }
    }
}