/** * 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); } } } }
/** * 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; } }