/** * 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!']; }