2017-02-27 7 views
1

사용자 등록을 위해 yii2-user을 사용하고 있습니다. 사용자가 소셜 계정에서 로그인하기 전에 등록되어 있는지 확인하고 싶습니다. 계정을 생성하고 전 세계적으로 main.php에서 처리하기 전에 이벤트를 실행 중입니다.Yii2 - 트리거 후 이벤트 핸들러에서 앱 종료

사용자가 이미 등록 된 경우 일부 메시지를 표시하고 이후에 등록/로그인 프로세스를 계속 진행하지 못하게하려고합니다.

요약하면 사용자가 지정된 조건이 일치하는 경우 이벤트 처리기에서 메시지를 표시하는 홈 페이지로 리디렉션 된 얻을 싶습니다.

'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-------- 
       } 
      ], 
     ], 
    ], 
], 

사용자를 홈 페이지로 리디렉션하고 현재 컨트롤러의 실행을 중지하는 가장 좋은 방법은 무엇입니까?

답변

0

추가 :

//---------- NOW REDIRECT TO HOME PAGE-------- 
Yii::$app->response->redirect(Url::home()); 
Yii::$app->end(); 
+0

이미 시도했다. 일하지 않았어 .. – Choxx