Esempio n. 1
0
 /**
  * Finds user by [[email]]
  *
  * @return User|null
  */
 public function getUser()
 {
     if ($this->_user === false) {
         $this->_user = User::findByEmail($this->email);
     }
     return $this->_user;
 }
Esempio n. 2
0
 public function actionOauthSuccess()
 {
     /* @var $modelUser \app\modules\account\models\User */
     $auth = Yii::$app->session->get('user.auth');
     Yii::$app->session->remove('user.auth');
     if (empty($auth)) {
         return $this->goHome();
     }
     // Đã đăng ký OAuth
     $modelUserOauth = User::findByOpenId($auth['uid'], $auth['provider']);
     if ($modelUserOauth !== null) {
         if (($modelUser = User::findByEmail($modelUserOauth->email)) !== null) {
             Yii::$app->user->login($modelUser);
             return $this->goHome();
         }
     }
     // Chưa đăng ký OAuth -> Kiểm tra email tồn tại hay chưa
     if ($auth['email'] != '') {
         $modelUserByEmail = User::findByEmail($auth['email']);
         if ($modelUserByEmail != null) {
             if (empty($modelUserByEmail->display_name)) {
                 $modelUserByEmail->display_name = $auth['name'];
             }
             if (empty($modelUserByEmail->first_name)) {
                 $modelUserByEmail->first_name = $auth['firstname'];
             }
             if (empty($modelUserByEmail->last_name)) {
                 $modelUserByEmail->last_name = $auth['lastname'];
             }
             $modelUserByEmail->openids = [$auth['provider'] => $auth['uid']];
             $modelUserByEmail->save();
             Yii::$app->user->login($modelUserByEmail);
             return $this->goHome();
         }
     }
     //        // Chuyen sang trang dang ky account
     //        return $this->redirect(['/account/frontend/registration/register', 'oauth' => StringHelper::encrypt($auth)]);
     // Đăng ký tự động user mới (1 vai truong hop thay ko on lam)
     $model = new User();
     $model->email = $auth['email'];
     $model->display_name = $auth['name'];
     $model->first_name = $auth['firstname'];
     $model->last_name = $auth['lastname'];
     $model->openids = [$auth['provider'] => $auth['uid']];
     $model->status = User::STATUS_ACTIVE;
     if ($model->save()) {
         Yii::$app->user->login($model);
     }
     return $this->goHome();
 }