Yii2 - завершить приложение из обработчика событий после срабатывания

Я использую yii2-user для регистрации пользователя. Я хочу проверить, зарегистрирован ли пользователь, прежде чем войти в систему из социальных учетных записей. Я запускаю событие перед созданием его учетной записи и обрабатываю его в main.php глобально.

Если пользователь уже зарегистрирован, я хочу отобразить какое-то сообщение и не позволить ему продолжить процесс регистрации/входа в систему после этого.

Короче говоря, я хочу, чтобы пользователь перенаправлялся на домашнюю страницу, отображая сообщение от обработчика событий, если указанное условие соответствует.

'modules' => [
    'user' => [
        'class' => 'dektrium\user\Module',
        'enableRegistration' => true,
        'controllerMap' => [
            'security' => [
                'class' => \dektrium\user\controllers\SecurityController::className(),
                'on ' . \dektrium\user\controllers\SecurityController::EVENT_BEFORE_CREATE_ACCOUNT => function ($e) {

                    $email = $e->client->email;

                    $user_model = \dektrium\user\models\User::findOne(['email' => $email]);

                    if($user_model == Null)
                    {
                        return;     //then just return and continue next steps
                    }
                    Yii::$app->session->setFlash('info', "You cannot directly login with this account. Please login with the credentials sent to your email ($email) first and then connect your Account from Settings.");
                    //---------- NOW REDIRECT TO HOME PAGE--------
                }
            ],
        ],
    ],
],

Как лучше всего перенаправить пользователя на домашнюю страницу и остановить выполнение текущего контроллера?


person Choxx    schedule 27.02.2017    source источник


Ответы (1)


Добавлять:

//---------- NOW REDIRECT TO HOME PAGE--------
Yii::$app->response->redirect(Url::home());
Yii::$app->end();
person sonofagun    schedule 27.02.2017