示例#1
0
 /**
  * Process login with social
  *
  * @return array
  */
 public function process()
 {
     if ($this->userInfo['first_name'] && $this->userInfo['last_name'] && $this->userInfo['email'] && in_array($this->socialName, self::$socialSupport)) {
         $messageActive = '_ZT_Please Activate Account from Email';
         $messageFailed = '_ZT_System is busy, please try again later!';
         $autoLoginIfAccountExists = CoreOptions::getOptions('social_automatic_' . $this->socialName, 'zcms', 0);
         $sendEmailActivateAccount = CoreOptions::getOptions('social_automatic_' . $this->socialName, 'zcms', 1);
         $this->user = Users::findFirst(['conditions' => 'email = ?0', 'bind' => [$this->userInfo['email']]]);
         $propertyName = 'is_active_' . $this->socialName;
         if ($this->user) {
             if ($this->user->{$propertyName} == 1) {
                 $this->user->loginCurrentUSer();
                 return ['success' => true, 'message' => ''];
             }
             if ($autoLoginIfAccountExists) {
                 $this->_updateLoginWithSocial();
                 $this->user->loginCurrentUSer();
                 return ['success' => true, 'message' => null];
             } else {
                 $ok = $this->_generateActiveAccountWithSocial();
                 if ($ok) {
                     return ['success' => true, 'message' => $messageActive];
                 } else {
                     return ['success' => false, 'message' => $messageFailed];
                 }
             }
         } else {
             $this->user = new Users();
             $this->user->first_name = $this->userInfo['first_name'];
             $this->user->last_name = $this->userInfo['last_name'];
             $this->user->email = $this->userInfo['email'];
             if ($sendEmailActivateAccount) {
                 $ok = $this->_generateActiveAccountWithSocial();
                 if ($ok) {
                     return ['success' => true, 'message' => $messageActive];
                 } else {
                     return ['success' => false, 'message' => $messageFailed];
                 }
             } else {
                 $this->user->is_active = 1;
                 if ($this->user->save()) {
                     $this->user->loginCurrentUSer();
                     return ['success' => true, 'message' => null];
                 } else {
                     return ['success' => false, 'message' => $messageFailed];
                 }
             }
         }
     }
     return ['success' => false, 'message' => '_ZT_Your info invalid, please contact to admin!'];
 }