Esempio n. 1
0
 public function checkGoogle($force = false)
 {
     if (is_null($client = $this->getGoogleClient($force))) {
         return null;
     }
     if (!isset($_GET['code']) || isset($_GET['state'])) {
         return null;
     }
     $this->debug($_GET['code']);
     $client->authenticate($_GET['code']);
     $user = $this->googleOauth->userinfo->get();
     $details = ['id' => $user['id'], 'name' => filter_var($user['name'], FILTER_SANITIZE_SPECIAL_CHARS), 'email' => filter_var($user['email'], FILTER_SANITIZE_EMAIL), 'profile_url' => filter_var($user['link'], FILTER_VALIDATE_URL), 'image_url' => filter_var($user['picture'], FILTER_VALIDATE_URL)];
     if ($force) {
         $user = User::findByPk($this->id);
         $user->google_id = $details['id'];
         UserConfig::set('GOOGLE_NAME', $details['name']);
         UserConfig::set('GOOGLE_EMAIL', $details['email']);
         UserConfig::set('GOOGLE_PROFILE', $details['profile_url']);
         UserConfig::set('GOOGLE_IMAGE', $details['image_url']);
         return $user->save(false);
     }
     if (!is_null($user = User::findByAttributes(['google_id' => $details['id']]))) {
         return $user;
     }
     return User::googleRegister($details);
 }
Esempio n. 2
0
 /**
  * Register user using facebook data. It will also check if email already exists and it will update that user.
  * @param GraphUser $me
  * @return User|null
  */
 public static function facebookRegister(GraphUser $me)
 {
     // 1. check if email already exists.
     $old = self::findByAttributes(array('email' => $me->getEmail()));
     if ($old) {
         /* @var $old User */
         $old->fb_id = $me->getId();
         if ($old->status == self::STATUS_NEW) {
             $old->status = self::STATUS_ACTIVE;
         }
         $old->save(false);
         UserConfig::set('FACEBOOK_NAME', $me->getFirstName() . ' ' . $me->getMiddleName() . ' ' . $me->getLastName(), $old->id);
         UserConfig::set('FACEBOOK_EMAIL', $me->getProperty('email'), $old->id);
         UserConfig::set('FACEBOOK_PROFILE', $me->getLink(), $old->id);
         return $old;
     }
     $user = new User();
     $user->fb_id = $me->getId();
     $user->email = $me->getProperty('email');
     $user->register_date = date('Y-m-d H:i:s');
     $user->status = self::STATUS_ACTIVE;
     $user->save(false);
     UserConfig::set('FACEBOOK_NAME', $me->getFirstName() . ' ' . $me->getMiddleName() . ' ' . $me->getLastName(), $user->id);
     UserConfig::set('FACEBOOK_EMAIL', $me->getProperty('email'), $user->id);
     UserConfig::set('FACEBOOK_PROFILE', $me->getLink(), $user->id);
     return $user;
 }