Esempio n. 1
0
 /**
  * Login with facebook account
  */
 public function loginWithFacebook()
 {
     $di = $this->getDI();
     $facebook = new FacebookConnector($di);
     $facebookUser = $facebook->getUser();
     if ($facebookUser) {
         try {
             $facebookUserProfile = $facebook->api('/me');
         } catch (\FacebookApiException $e) {
             $di->logger->begin();
             $di->logger->error($e->getMessage());
             $di->logger->commit();
             $facebookUser = null;
         }
     } else {
         $scope = array('scope' => 'email,user_birthday,user_location');
         return $this->response->redirect($facebook->getLoginUrl($scope), true);
     }
     if ($facebookUser) {
         $pupRedirect = $di->get('config')->pup->redirect;
         $email = isset($facebookUserProfile['email']) ? $facebookUserProfile['email'] : '*****@*****.**';
         $user = User::findFirst(" email='{$email}' OR facebook_id='" . $facebookUserProfile['id'] . "' ");
         if ($user) {
             $this->checkUserFlags($user);
             $this->setIdentity($user);
             if (!$user->getFacebookId()) {
                 $user->setFacebookId($facebookUserProfile['id']);
                 $user->setFacebookName($facebookUserProfile['name']);
                 $user->setFacebookData(serialize($facebookUserProfile));
                 $user->update();
             }
             $this->saveSuccessLogin($user);
             return $this->response->redirect($pupRedirect->success);
         } else {
             $password = $this->generatePassword();
             $user = new User();
             $user->setEmail($email);
             $user->setPassword($di->get('security')->hash($password));
             $user->setFacebookId($facebookUserProfile['id']);
             $user->setFacebookName($facebookUserProfile['name']);
             $user->setFacebookData(serialize($facebookUserProfile));
             $user->setMustChangePassword(0);
             $user->setGroupId(2);
             $user->setBanned(0);
             $user->setSuspended(0);
             $user->setActive(1);
             if (true == $user->create()) {
                 $this->setIdentity($user);
                 $this->saveSuccessLogin($user);
                 return $this->response->redirect($pupRedirect->success);
             } else {
                 $this->flash->error('Error on facebook');
                 return $this->response->redirect($pupRedirect->failure, true);
             }
         }
     }
 }
Esempio n. 2
0
 /**
  * Login with facebook account.
  */
 public function loginWithFacebook()
 {
     $di = $this->getDI();
     $facebook = new FacebookConnector($di);
     $facebookUser = $facebook->getUser();
     if (!$facebookUser) {
         $scope = ['scope' => 'email,user_birthday,user_location'];
         return $this->response->redirect($facebook->getLoginUrl($scope), true);
     }
     try {
         return $this->authenticateOrCreateFacebookUser($facebookUser);
     } catch (\FacebookApiException $e) {
         $di->logger->begin();
         $di->logger->error($e->getMessage());
         $di->logger->commit();
         $facebookUser = null;
     }
 }