Example #1
0
 public function authenticate()
 {
     if (!isset($_SESSION['affiliate_login'])) {
         $user = User::model()->findByAttributes(array('email' => $this->username));
     } else {
         $user = User::findAffiliateUser($_SESSION['affiliate_login']['provider'], $_SESSION['affiliate_login']['uid']);
     }
     if ($user === null) {
         $this->errorCode = self::ERROR_USERNAME_INVALID;
     } else {
         #exist this user
         if (!isset($_SESSION['affiliate_login'])) {
             #normal login!
             if (md5($this->password) !== $user->password) {
                 $this->errorCode = self::ERROR_PASSWORD_INVALID;
             } else {
                 if (!$user->is_activated) {
                     $this->errorCode = self::ERROR_USER_NOT_ACTIVATED;
                 } else {
                     $this->_id = $user->id;
                     $this->errorCode = self::ERROR_NONE;
                     $this->setState("_id", $user->id);
                     $this->setState('roles', $user->role);
                 }
             }
         } else {
             #has session affiliate login
             $this->_id = $user->id;
             $this->errorCode = self::ERROR_NONE;
             $this->setState("_id", $user->id);
             $this->setState('roles', $user->role);
         }
     }
     return !$this->errorCode;
 }
Example #2
0
 public function processAffiliateUser($auth)
 {
     $provider = $auth['provider'];
     $uid = $auth['uid'];
     $info = $auth['info'];
     $email = $provider . ":" . $uid;
     $username = $provider . ":" . $uid;
     if (isset($info['first_name']) and isset($info['last_name'])) {
         $first_name = $info['first_name'];
         $last_name = $info['last_name'];
     } else {
         if (isset($info['name'])) {
             $name = explode(" ", $info['name']);
             $last_name = array_pop($name);
             $first_name = implode(" ", $name);
         } else {
             $first_name = $provider . ":" . $uid;
             $last_name = " ";
         }
     }
     #check if exist user
     $user = User::findAffiliateUser($provider, $uid);
     if (!$user) {
         $user = new User();
         $user->email = $email;
         $user->username = $username;
         $user->first_name = $first_name;
         $user->last_name = $last_name;
         $user->role = 'user';
         $user->affiliation = $provider;
         if ($provider == "Facebook") {
             $user->facebook_id = $uid;
         } else {
             if ($provider == "Twitter") {
                 $user->twitter_id = $uid;
             } else {
                 if ($provider == "LinkedIn") {
                     $user->linkedin_id = $uid;
                 } else {
                     if ($provider == "Google") {
                         $user->google_id = $uid;
                     } else {
                         if ($provider == "Orcid") {
                             $user->orcid_id = $uid;
                         }
                     }
                 }
             }
         }
         #generate some credential data
         $user->password = self::generatePassword(32);
         $user->encryptPassword();
     }
     # if login with fb, activate the user
     $user->is_activated = true;
     if ($user->save(false)) {
         return $user;
     }
 }