private function loginUserGoogle(UserResponseInterface $response)
 {
     $username = $response->getUsername();
     $firstName = $response->getResponse()['given_name'];
     $lastName = $response->getResponse()['family_name'];
     $gender = $response->getResponse()['gender'];
     $email = $response->getEmail();
     return ['loginField' => 'googleLogin', 'username' => $username, 'firstName' => $firstName, 'lastName' => $lastName, 'gender' => $gender, 'email' => $email];
 }
Esempio n. 2
0
 /**
  * {@inheritdoc}
  */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $authProviderName = $response->getResourceOwner()->getName();
     switch ($authProviderName) {
         case 'github':
             $username = $response->getResponse()['login'];
             break;
         case 'twitter':
             $username = $response->getResponse()['screen_name'];
             break;
     }
     $this->session->set('owner', $authProviderName);
     $this->session->set('username', $username);
     return $this->loadUserByUsername($username);
 }
Esempio n. 3
0
 public function importProfileLinkedinAction(Request $request, UserResponseInterface $response)
 {
     $data = $response->getResponse();
     /* this method should return all data that was sent from resource owner ???*/
     var_dump($data);
     exit;
 }
Esempio n. 4
0
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     #        $username = $response->getUsername();
     #        var_dump($username);exit;
     $username = $response->getResponse()["username"];
     var_dump($username);
     $user = $this->userManager->findUserBy(array('username' => $username));
     //when the user is registrating
     if (null === $user) {
         $service = $response->getResourceOwner()->getName();
         $setter = 'set' . ucfirst($service);
         $setter_id = $setter . 'Id';
         $setter_token = $setter . 'AccessToken';
         // create new user here
         $user = $this->userManager->createUser();
         $user->{$setter_id}($username);
         $user->{$setter_token}($response->getAccessToken());
         //I have set all requested data with the user's username
         //modify here with relevant data
         $user->setUsername($username);
         #    $user->setNickname($response->getNickName());
         $user->setEmail($username . '@yoursite.com');
         $user->setPassword($username);
         #    $user->setPath($response->getProfilePicture());
         $user->setEnabled(true);
         $this->userManager->updateUser($user);
         return $user;
     }
     //if user exists - go with the HWIOAuth way
     $serviceName = $response->getResourceOwner()->getName();
     $setter = 'set' . ucfirst($serviceName) . 'AccessToken';
     //update access token
     $user->{$setter}($response->getAccessToken());
     return $user;
 }
 public function handleResponse(UserResponseInterface $response, UserService $userService)
 {
     $fields = $response->getResponse();
     $gitHubLogin = $fields['login'];
     $accessToken = $response->getAccessToken();
     $user = $userService->findByGitHubLogin($gitHubLogin);
     if (null === $user) {
         throw new UsernameNotFoundException();
     }
     $oAuthUser = new OAuthUser($user);
     $oAuthUser->addRole('ROLE_GITHUB_USER');
     $oAuthUser->setAccessToken($accessToken);
     if (array_key_exists('name', $fields)) {
         $gitHubName = $fields['name'];
         $oAuthUser->setRealName($gitHubName);
     } else {
         $oAuthUser->setRealName($gitHubLogin);
     }
     $client = new Client();
     $client->setOption('api_version', 'v3');
     $client->authenticate($response->getAccessToken(), Client::AUTH_HTTP_TOKEN);
     /* @var \Github\Api\CurrentUser $currentUserApi */
     $currentUserApi = $client->api('current_user');
     $emails = $currentUserApi->emails();
     $allEMails = $emails->all();
     $oAuthUser->setEmail($this->getPrimaryEmailAddress($allEMails));
     return $oAuthUser;
 }
Esempio n. 6
0
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     // echa($response->getAccessToken());
     // 		echa($response->getResponse(), __FILE__);
     // -- Load user's data from P4S
     $data = $response->getResponse();
     if (null != $data && array_key_exists('status', $data) && ResponseHelper::OK == $data['status'] && array_key_exists('data', $data) && null != $data['data']) {
         $p4sId = $data['data']['id'];
     } else {
         throw new UsernameNotFoundException("Unable to load this user info");
     }
     $result = $this->em->getRepository('Amisure\\P4SApiBundle\\Entity\\User\\SessionUser')->findOneBy(array('username' => $p4sId));
     // - Create an account
     if (null == $result) {
         $user = $this->fillUser($data['data']);
         $this->createNewUser($user);
     } else {
         // $user = $result;
         $user = $this->fillUser($data['data']);
         $user->setId($result->getId());
     }
     // -- Save access token
     $this->session->set('access_token', $response->getAccessToken());
     return $user;
 }
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     try {
         $resourceOwnerName = $response->getResourceOwner()->getName();
         if (!isset($this->properties[$resourceOwnerName])) {
             throw new \RuntimeException(sprintf("No property defined for entity for resource owner '%s'.", $resourceOwnerName));
         }
         $username = $response->getUsername();
         if (null === ($user = $this->repository->findOneBy(array($this->properties[$resourceOwnerName] => $username)))) {
             throw new UsernameNotFoundException(sprintf("User '%s' not found.", $username));
         }
         return $user;
     } catch (UsernameNotFoundException $e) {
         $rawResponse = $response->getResponse();
         $user = new User($rawResponse['screen_name']);
         $user->setTwitterId($rawResponse['id']);
         $user->setUsername($rawResponse['screen_name']);
         $user->setTodaySinceId('');
         $user->setIsActive(true);
         $user->setCreateAt(new \DateTime());
         $user->setUpdateAt(new \DateTime());
         $this->em->persist($user);
         $this->em->flush();
         return $user;
     }
 }
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $user = $this->userRepository->findOneBy(['spotifyId' => $response->getUsername()]);
     if (!$user instanceof SpotifyUser) {
         $user = new SpotifyUser($response->getUsername());
     }
     $user->setSpotifyId($response->getUsername())->setDisplayName($response->getRealName())->setAccessToken($response->getAccessToken())->setAccessTokenExpires(time() + $response->getExpiresIn())->setRefreshToken($response->getRefreshToken())->setProfileUrl($response->getResponse()['href']);
     $responseHasImages = isset($response->getResponse()['images']) && is_array($response->getResponse()['images']);
     $responseImageExists = array_key_exists('url', $response->getResponse()['images'][0]);
     if ($responseHasImages && $responseImageExists) {
         $user->setImageUrl($response->getResponse()['images'][0]['url']);
     }
     $this->em->persist($user);
     $this->em->flush();
     return $this->loadUserByUsername($user->getUsername());
 }
 /**
  * {@inheritdoc}
  */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $content = $response->getResponse();
     $resourceOwner = $response->getResourceOwner();
     try {
         $user = $this->loadUserByServiceAndId($resourceOwner->getName(), $content['id']);
         return $user;
     } catch (\Exception $e) {
         $name = $response->getRealName();
         $nameArray = explode(' ', $name, 2);
         $firstName = $response->getFirstName();
         $lastName = $response->getLastName();
         if (empty($firstName) || empty($lastName)) {
             if (array_key_exists(0, $nameArray)) {
                 $firstName = ucfirst(strtolower($nameArray[0]));
             }
             if (array_key_exists(1, $nameArray)) {
                 $lastName = ucfirst(strtolower($nameArray[1]));
             }
         }
         $user = array();
         $user['firstName'] = $firstName;
         $user['lastName'] = $lastName;
         $user['username'] = $this->createUsername($response->getNickname());
         $user['mail'] = $response->getEmail();
         $this->session->set('icap.oauth.user', $user);
         $resourceOwnerArray = array('name' => $resourceOwner->getName(), 'id' => $content['id']);
         $this->session->set('icap.oauth.resource_owner', $resourceOwnerArray);
         throw $e;
     }
 }
Esempio n. 10
0
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     //$doctrine = $em = $this->getEntityManager();
     //echo 'fsfd';
     //print_r($doctrine);
     //die;
     try {
         $userdata = $response->getResponse();
         $fbid = $userdata['id'];
         $name = $userdata['name'];
         $email = $userdata['email'];
         print_r($userdata);
         $user = $this->_em->createQueryBuilder()->select('u')->from('Yasoon\\Site\\Entity\\AuthorEntity', 'u')->where('u.facebookId = :fbid')->setParameter('fbid', $fbid)->getQuery()->getSingleResult();
         if (!is_object($user)) {
             $user = (new AuthorEntity())->setName($name)->setEmail('')->setPassword('')->setSubscribed(1)->setFacebookId($fbid)->setPublicationDate(new \DateTime())->setRole(1);
             $this->_em->persist($user);
             $this->_em->flush();
         }
     } catch (\Exception $e) {
         return ['error' => true, 'errorText' => $e->getMessage()];
     }
     //$user = $this->_em->getRepository('Yasoon\Site\Entity\AuthorEntity')->find(41);
     //print_r($user->getName());
     return $user;
 }
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $data = $response->getResponse();
     $username = $response->getUsername();
     $email = $response->getEmail() ? $response->getEmail() : $username;
     $user = $this->userManager->findUserBy(array($this->getProperty($response) => $username));
     //when the user is registrating
     if (null === $user) {
         $service = $response->getResourceOwner()->getName();
         $setter = 'set' . ucfirst($service);
         $setter_id = $setter . 'Id';
         $setter_token = $setter . 'AccessToken';
         // create new user here
         $user = $this->userManager->createUser();
         $user->{$setter_id}($username);
         $user->{$setter_token}($response->getAccessToken());
         //I have set all requested data with the user's username
         //modify here with relevant data
         $user->setUsername($username);
         $user->setEmail($email);
         $user->setPassword($username);
         $user->setEnabled(true);
         $this->userManager->updateUser($user);
         return $user;
     }
     //if user exists - go with the HWIOAuth way
     $user = parent::loadUserByOAuthUserResponse($response);
     $serviceName = $response->getResourceOwner()->getName();
     $setter = 'set' . ucfirst($serviceName) . 'AccessToken';
     //update access token
     $user->{$setter}($response->getAccessToken());
     return $user;
 }
 /**
  * {@inheritdoc}
  */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $userEmail = $response->getEmail();
     $user = $this->userManager->findUserByEmail($userEmail);
     // if null just create new user and set it properties
     if (null === $user) {
         $userData = $response->getResponse();
         $user = new User();
         $user->setUsername($userData['formattedName']);
         $user->setPlainPassword(rand(1000000, 10000000));
         //TODO:find a better option
         //TODO: add location, company name, ..
         $user->setEmail($response->getEmail());
         $user->setEnabled(true);
         $this->userManager->updateUser($user);
         $this->em->flush();
         return $user;
     }
     // else update access token of existing user
     $serviceName = $response->getResourceOwner()->getName();
     $setter = 'set' . ucfirst($serviceName) . 'AccessToken';
     $user->{$setter}($response->getAccessToken());
     //update access token
     return $user;
 }
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $generator = new SecureRandom();
     $random = $generator->nextBytes(10);
     $data = $response->getResponse();
     $username = $response->getUsername();
     $email = $response->getEmail() ? $response->getEmail() : $username;
     $service = $response->getResourceOwner()->getName();
     $user = $this->userManager->findUserBy(array($this->getProperty($response) => $username));
     //$user = $this->userManager->findUserBy(array($service.'Id' => $username));
     //when the user is registrating
     if (null === $user) {
         $setter = 'set' . ucfirst($service);
         $setter_id = $setter . 'Id';
         $setter_token = $setter . 'AccessToken';
         // create new user here
         $user = $this->userManager->createUser();
         $user->{$setter_id}($username);
         $user->{$setter_token}($response->getAccessToken());
         $user->setUsername($email);
         $user->setEmail($email);
         $user->setPlainPassword($random);
         $user->setName($response->getRealName());
         $user->setEnabled(true);
         $this->userManager->updateUser($user);
         return $user;
     }
     //if user exists - go with the HWIOAuth way
     $user = parent::loadUserByOAuthUserResponse($response);
     $serviceName = $response->getResourceOwner()->getName();
     $setter = 'set' . ucfirst($serviceName) . 'AccessToken';
     //update access token
     $user->{$setter}($response->getAccessToken());
     return $user;
 }
 /**
  * {@inheritdoc}
  */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $data = $response->getResponse();
     $username = $response->getUsername();
     $user = $this->userManager->findUserBy(array($this->getProperty($response) => $username));
     $service = $response->getResourceOwner()->getName();
     //when the user is registrating
     if (null === $user) {
         if ($service == "google") {
             $service = "gplus";
         }
         $setter = 'set' . ucfirst($service);
         $setter_id = $setter . 'Uid';
         $setter_token = $setter . 'Name';
         // create new user here
         // TODO: Check email, if exist add service
         $userE = $this->userManager->findUserBy(array("email" => $response->getEmail()));
         if (null === $userE) {
             $user = $this->userManager->createUser();
             $user->setUsername($response->getEmail());
             if ($service == "gplus") {
                 $user->setFirstname($data['given_name']);
             }
             if ($service == "facebook") {
                 $name = explode(" ", $data['name']);
                 $user->setFirstname($name[0]);
                 $user->setLastname($name[1]);
             }
             $user->setEmail($response->getEmail());
             $user->setPassword("");
         } else {
             $user = $userE;
         }
         $user->{$setter_id}($username);
         $user->{$setter_token}($response->getAccessToken());
         $user->setEnabled(true);
         // Customfields
         $user->setProfilePicture($response->getProfilePicture());
         //TODO: Save Locale, $user->setLocale($response->getLocale());
         $this->userManager->updateUser($user);
         return $user;
     }
     //if user exists - go with the HWIOAuth way
     $user = parent::loadUserByOAuthUserResponse($response);
     $serviceName = $response->getResourceOwner()->getName();
     if ($serviceName == "google") {
         $serviceName = "gplus";
     }
     $setter = 'set' . ucfirst($serviceName) . 'Name';
     //update access token
     $user->{$setter}($response->getAccessToken());
     //update custom fields
     //TODO: Check google response, facebook?
     if ($service == "facebook") {
         $url = "http://graph.facebook.com/" . $data['id'] . "/picture?type=normal";
         $user->setProfilePicture($url);
     }
     return $user;
 }
 /**
  * {@inheritdoc}
  */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $authProviderName = $response->getResourceOwner()->getName();
     $username = $response->getResponse()['login'];
     $this->session->set('owner', $authProviderName);
     $this->session->set('username', $username);
     return $this->loadUserByUsername($username);
 }
 /**
  * {@inheritdoc}
  */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $rawResponse = $response->getResponse();
     $username = $response->getUsername();
     $user = $this->userManager->findUserBy(array($this->getProperty($response) => $username));
     if (null === $user) {
         $user = $this->userManager->findUserBy(array('email' => $rawResponse['emailAddress']));
     }
     //when the user is registrating
     if (null === $user) {
         $service = $response->getResourceOwner()->getName();
         $setter = 'set' . ucfirst($service);
         $setter_id = $setter . 'Id';
         $setter_token = $setter . 'AccessToken';
         // create new user here
         $user = $this->userManager->createUser();
         $user->{$setter_id}($username);
         $user->{$setter_token}($response->getAccessToken());
         //I have set all requested data with the user's username
         //modify here with relevant data
         $user->setUsername($username);
         $user->setEmail($username);
         $user->setPassword($username);
         $user->setEnabled(true);
         $professional = new Professional();
         $professional->setUpdatedAt(new \DateTime());
         $professional->setCreatedAt(new \DateTime());
         $professional->setUser($user);
         $user->setProfessional($professional);
         $user->addRole('ROLE_USER');
         $user->addRole('ROLE_PROFESIONAL');
         /* CUSTOM PROVIDER INFO */
         $user->setName($rawResponse['firstName']);
         $user->setSurname($rawResponse['lastName']);
         $user->setEmail($rawResponse['emailAddress']);
         $user->setExternalPath($rawResponse['pictureUrl']);
         $professional->setHeadline($rawResponse['headline']);
         $skills = array();
         $rawskills = $rawResponse['skills'];
         foreach ($rawskills['values'] as $skill) {
             $skills[] = $skill['skill']['name'];
         }
         $professional->setSkills($skills);
         $this->entityManager->persist($professional);
         $this->userManager->updateUser($user);
         $this->entityManager->flush();
         return $user;
     }
     //if user exists - go with the HWIOAuth way
     //$user = parent::loadUserByOAuthUserResponse($response);
     $serviceName = $response->getResourceOwner()->getName();
     $setter = 'set' . ucfirst($serviceName) . 'AccessToken';
     //update access token
     $user->{$setter}($response->getAccessToken());
     return $user;
 }
Esempio n. 17
0
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     //Data from Facebook response
     $user_details = $response->getResponse();
     $facebook_Id = $response->getUsername();
     /* An ID like: 112259658235204980084 */
     $email = $user_details['email'];
     $first_name = $user_details['first_name'];
     $last_name = $user_details['last_name'];
     $nickname = $response->getNickname();
     $realname = $response->getRealName();
     $avatar = $response->getProfilePicture();
     //set data in session
     $this->session->set('email', $email);
     $this->session->set('nickname', $nickname);
     $this->session->set('realname', $realname);
     $this->session->set('avatar', $avatar);
     //Check if this Google user already exists in our app DB
     $qb = $this->doctrine->getManager()->createQueryBuilder();
     $qb->select('u')->from('CvProUserBundle:User', 'u')->where('u.facebookId = :gid')->setParameter('gid', $facebook_Id)->setMaxResults(1);
     $result = $qb->getQuery()->getResult();
     //add to database if doesn't exist
     if (!count($result)) {
         $user = new User();
         $user->setUsername($facebook_Id);
         $user->setFirstName($first_name);
         $user->setLastName($last_name);
         // $user->setRealname($realname);
         // $user->setNickname($nickname);
         $user->setEmail($email);
         $user->setFacebookId($facebook_Id);
         //$user->setRoles('ROLE_USER');
         //Set some wild random pass since its irrelevant, this is facebook login
         $factory = $this->container->get('security.encoder_factory');
         $encoder = $factory->getEncoder($user);
         $password = $encoder->encodePassword(md5(uniqid()), $user->getSalt());
         $user->setPassword($password);
         $em = $this->doctrine->getManager();
         $em->persist($user);
         $em->flush();
     } else {
         $user = $result[0];
         /* return User */
     }
     //set id
     $this->session->set('id', $user->getId());
     return $this->loadUserByUsername($response->getUsername());
 }
Esempio n. 18
0
 public function handleResponse(UserResponseInterface $response, UserService $userService)
 {
     $fields = $response->getResponse();
     $email = $fields['email'];
     $login = explode('@', $email)[0];
     $user = $userService->findByGoogleLogin($login);
     if (null === $user) {
         throw new UsernameNotFoundException();
     }
     $oAuthUser = new OAuthUser($user);
     $oAuthUser->addRole('ROLE_GOOGLE_USER');
     $oAuthUser->setAccessToken($response->getAccessToken());
     $oAuthUser->setRealName($fields['name']);
     $oAuthUser->setEmail($email);
     return $oAuthUser;
 }
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     if (array_key_exists("error", $response->getResponse())) {
         echo "<br/><h1> &nbsp;&nbsp;Oops, some errors occurred !</h1> <hr/>";
         var_dump($response);
         die;
     }
     $google_id = $response->getUsername();
     /* An ID like: 112259658235204980084 */
     $email = $response->getResponse()['email'];
     //$nickname = $response->getNickname();
     // $realname = $response->getRealName();
     //$avatar = $response->getProfilePicture();
     //set data in session
     $this->session->set('email', $email);
     //$this->session->set('nickname', $nickname);
     // $this->session->set('realname', $realname);
     //$this->session->set('avatar', $avatar);
     //Check if this Google user already exists in our app DB
     $qb = $this->doctrine->getManager()->createQueryBuilder();
     $qb->select('u')->from('MandarinMainBundle:User', 'u')->where('u.googleId = :gid')->setParameter('gid', $google_id)->setMaxResults(1);
     $result = $qb->getQuery()->getResult();
     //add to database if doesn't exists
     if (!count($result)) {
         $user = new User();
         $user->setUsername($google_id);
         //$user->setRealname($realname);
         //$user->setNickname($nickname);
         $user->setEmail($email);
         $user->setGoogleId($google_id);
         //$user->addRole('ROLE_USER');
         //Set some wild random pass since its irrelevant, this is Google login
         $factory = $this->container->get('security.encoder_factory');
         $encoder = $factory->getEncoder($user);
         $password = $encoder->encodePassword(md5(uniqid()), $user->getSalt());
         $user->setPassword($password);
         $em = $this->doctrine->getManager();
         $em->persist($user);
         $em->flush();
     } else {
         $user = $result[0];
         /* return User */
     }
     //set id
     $this->session->set('id', $user->getId());
     return $this->loadUserByUsername($response->getUsername());
 }
Esempio n. 20
0
 /**
  * Ad-hoc creation of user
  *
  * @param UserResponseInterface $response
  *
  * @return User
  */
 protected function createUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $user = $this->manager->createUser();
     // set default values taken from OAuth sign-in provider account
     if (null !== ($email = $response->getEmail())) {
         $user->setEmail($email);
         $user->setUsername($email);
         $user->setPlainPassword(md5(uniqid()));
     }
     $user->setEnabled(true);
     // Conservation de l'id
     $providerName = $response->getResourceOwner()->getName();
     $providerNameSetter = 'set' . ucfirst($providerName) . 'Id';
     $user->{$providerNameSetter}($response->getResponse()['id']);
     $this->manager->updateUser($user);
     return $user;
 }
Esempio n. 21
0
 /**
  * this method is to register new users in the database.
  * {@inheritdoc}
  */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     //$backTrace = json_encode(debug_backtrace());
     $responseData = json_encode($response->getResponse());
     $this->logger->info('Calling loadUserByOAuthUserResponse from \\n' . $responseData);
     $service = $response->getResourceOwner()->getName();
     $username = $response->getUsername();
     $user = $this->userManager->findUserBy(array($this->getProperty($response) => $username));
     //when the user is registrating
     if (null === $user) {
         $setter = 'set' . ucfirst($service);
         $setter_id = $setter . 'Id';
         $setter_token = $setter . 'AccessToken';
         $setter_data = $setter . 'RawData';
         // create new user here
         $user = $this->userManager->createUser();
         $user->{$setter_id}($username);
         $user->{$setter_token}($response->getAccessToken());
         $user->{$setter_data}($responseData);
         $user->setUsername($response->getNickname());
         $user->setPlainPassword('Welcome1!');
         if (strlen($response->getEmail()) >= 5) {
             $user->setEmail($response->getEmail());
         } else {
             $user->setEmail($username . '@' . $service . '.com');
         }
         $user->setFirstName($response->getFirstName());
         $user->setLastName($response->getLastName());
         $user->setPicture($response->getProfilePicture());
         $this->userManager->updateCanonicalFields($user);
         $this->userManager->updatePassword($user);
         $user->setEnabled(true);
         $this->logger->info('Persisting new User ' . $user->serialize());
         $this->userManager->updateUser($user);
         return $user;
     }
     $this->logger->info('OAuth User ' . $username . ' already exists -  go with the HWIOAuth way');
     //if user exists - go with the HWIOAuth way
     $user = parent::loadUserByOAuthUserResponse($response);
     $serviceName = $response->getResourceOwner()->getName();
     $setter = 'set' . ucfirst($serviceName) . 'AccessToken';
     //update access token
     $user->{$setter}($response->getAccessToken());
     return $user;
 }
 /**
  * @param UserResponseInterface $response
  *
  * @return \FOS\UserBundle\Model\UserInterface|UserInterface
  */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $data = $response->getResponse();
     $username = $data['login'];
     $user = $this->userManager->findUserByUsername($username);
     //when the user is registrating
     if (null === $user) {
         $service = $response->getResourceOwner()->getName();
         $setter = 'set' . ucfirst($service);
         $setterId = $setter . 'Id';
         $setterToken = $setter . 'AccessToken';
         // create new user here
         $user = $this->userManager->createUser();
         $user->{$setterId}($data['id']);
         $user->{$setterToken}($response->getAccessToken());
         unset($data['name']);
         unset($data['email']);
         if (isset($data['name'])) {
             $user->setRealName($data['name']);
         }
         if (isset($data['email'])) {
             $user->setEmail($data['email']);
         }
         //I have set all requested data with the user's username modify here with relevant data
         $user->setUsername($username);
         $user->setPlainPassword($data['id']);
         $user->setAvatarUrl($data['avatar_url']);
         $user->setGravatarId($data['gravatar_id']);
         $user->setEnabled(true);
         $this->userManager->updateUser($user);
         return $user;
     }
     //if user exists - go with the HWIOAuth way
     $user = parent::loadUserByOAuthUserResponse($response);
     $serviceName = $response->getResourceOwner()->getName();
     $setter = 'set' . ucfirst($serviceName) . 'AccessToken';
     //update access token
     $user->{$setter}($response->getAccessToken());
     return $user;
 }
 /**
  * {@inheritDoc}
  */
 public function connect(UserInterface $user, UserResponseInterface $response)
 {
     $username = $response->getUsername();
     $service = $response->getResourceOwner()->getName();
     $setter = 'set' . ucfirst($service);
     $setter_id = $setter . 'Id';
     $setter_token = $setter . 'AccessToken';
     $setter_username = $setter . 'Username';
     $existingUser = $this->userManager->findUserBy(array("{$service}Id" => $username));
     if ($existingUser instanceof UserInterface && $existingUser->getId() != $user->getId()) {
         throw new AlreadyLinkedAccount();
         $previousUser->{$setter_id}(null);
         $previousUser->{$setter_token}(null);
         $this->userManager->updateUser($previousUser);
     }
     $screenName = $response->getNickname();
     $user->{$setter_id}($username);
     $user->{$setter_token}($response->getAccessToken());
     $user->{$setter_username}($screenName);
     if ($service === 'facebook') {
         $this->setFacebookData($user, $response->getResponse());
     }
     $this->userManager->updateUser($user);
 }
Esempio n. 24
0
 /**
  * {@inheritdoc}
  */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $res = $response->getResponse();
     // Only allow telecomnancy.net users
     if (!isset($res['hd']) || strtolower($res['hd']) !== 'telecomnancy.net') {
         throw new UsernameNotFoundException('Only telecomnancy.net user allowed');
     }
     try {
         $user = $this->loadUserByUsername($res['email']);
     } catch (UsernameNotFoundException $e) {
         // Create new user
         $user = new User();
         $user->setUsername($res['email']);
         $user->setFirstname($res['given_name']);
         $user->setLastname($res['family_name']);
         $user->addDefaultRoles();
         $user->setEnabled(true);
         $user->setOauth(true);
         $em = $this->container->get('doctrine.orm.entity_manager');
         $em->persist($user);
         $em->flush();
     }
     return $user;
 }
Esempio n. 25
0
 /**
 
 * {@inheritdoc}
 */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $username = $response->getUsername();
     $fbUsername = $response->getRealName();
     $fbNickname = $response->getNickname();
     //echo $fbGender = $response->getResponse()->getFirstName();
     /*echo $fbNickname = $response->getBirthDate();*/
     $fbUserEmail = $response->getEmail();
     //echo "<pre>";
     //print_r($response->getResponse());
     //print_r($response);
     //echo "</pre>";
     $resArray = $response->getResponse();
     $fbPic = $resArray['picture']['data']['url'];
     $fbName = $resArray['name'];
     $fbGender = $resArray['gender'];
     $fbLanguages = $resArray['languages']['0']['name'];
     $fbLocation = $resArray['location']['name'];
     $fbHometown = $resArray['hometown']['name'];
     $str = $fbPic . '-' . $fbName . '-' . $fbGender . '-' . $fbLanguages . '-' . $fbLocation . '-' . $fbHometown;
     //exit('ff');
     $user = $this->userManager->findUserBy(array($this->getProperty($response) => $username));
     //when the user is registrating
     if (null === $user) {
         $service = $response->getResourceOwner()->getName();
         $setter = 'set' . ucfirst($service);
         $setter_id = $setter . 'Id';
         $setter_token = $setter . 'AccessToken';
         // create new user here
         $user = $this->userManager->createUser();
         $user->{$setter_id}($username);
         $user->{$setter_token}($response->getAccessToken());
         //I have set all requested data with the user's username
         //modify here with relevant data
         //$user->setUsername($username);
         //case to handle for blank username
         if (preg_match('/\\s/', $fbNickname)) {
             $no = rand(1, 99999);
             $fbNickname = $fbNickname . $no;
         }
         $user->setUsername(str_replace(' ', '', $fbNickname));
         $user->setName($fbUsername);
         if (isset($fbUserEmail)) {
             $user->setEmail($response->getEmail($fbUserEmail));
             //exit('defined');
         } else {
             $user->setEmail($username);
             //exit('undef');
         }
         //$user->setEmail($username);
         $user->setCity($fbLocation);
         $user->setLocale($fbLanguages);
         $user->setFacebookName($fbName);
         $user->setGender($fbGender);
         $user->setBiography($str);
         $user->setPassword($username);
         $user->setEnabled(true);
         $this->userManager->updateUser($user);
         return $user;
     }
     //if user exists - go with the HWIOAuth way
     $user = parent::loadUserByOAuthUserResponse($response);
     $serviceName = $response->getResourceOwner()->getName();
     $setter = 'set' . ucfirst($serviceName) . 'AccessToken';
     //update access token
     $user->{$setter}($response->getAccessToken());
     return $user;
 }
Esempio n. 26
0
 /**
  * {@inheritdoc}
  */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     // First, check if it's an Azure User
     if (get_class($response->getResourceOwner()) != "HWI\\Bundle\\OAuthBundle\\OAuth\\ResourceOwner\\AzureResourceOwner") {
         throw new UnsupportedUserException("Can not load a user by " . get_class($response->getResourceOwner()) . ".");
     }
     // Check if this user exists
     $user = $this->userManager->findUserByEmail($response->getEmail());
     // Load groups ids
     $groups = $this->entityManager->createQueryBuilder()->select("azureRole.azureGid")->from("BdEMainBundle:AzureRole", 'azureRole')->getQuery()->getArrayResult();
     $request = ['groupIds' => []];
     foreach ($groups as $group) {
         $request['groupIds'][] = $group['azureGid'];
     }
     // Load groups for this user
     $client = new Curl();
     $client->setTimeout(20000);
     $client = new Browser($client);
     $uid = $response->getResponse()['oid'];
     $uri = "https://graph.windows.net" . "/" . $this->tenant . "/me/checkMemberGroups?api-version=1.6";
     $r = $client->post($uri, array("Authorization: Bearer " . $response->getAccessToken() . "", "Content-Type: application/json", "Accept: application/json"), json_encode($request));
     $r = json_decode($r->getContent());
     $groups = $r->value;
     $roleRepo = $this->entityManager->getRepository("BdEMainBundle:AzureRole");
     /** @var AzureRole[] $azureRoles */
     $azureRoles = $roleRepo->createQueryBuilder('azureRole')->where('azureRole.azureGid IN (?1)')->setParameter(1, $groups)->getQuery()->getResult();
     /** @var Role[] $roles */
     $roles = array();
     foreach ($azureRoles as $azureRole) {
         $roles = array_merge($roles, $azureRole->getRoles());
     }
     $roles = array_unique($roles);
     if (sizeof($roles) == 0) {
         // Try to get if it's a SuperAdmin
         $uri = "https://graph.windows.net" . "/" . $this->tenant . "/me/memberOf?api-version=1.6";
         $r = $client->get($uri, array("authorization: Bearer " . $response->getAccessToken()));
         $userRoles = json_decode($r->getContent());
         if (!property_exists($userRoles, 'value')) {
             throw new UsernameNotFoundException(sprintf("Impossible to log you !", $response->getRealName()));
         }
         $userRoles = $userRoles->value;
         foreach ($userRoles as $userRole) {
             if ($userRole->objectType == 'Role') {
                 if ($userRole->displayName == "Company Administrator" && strpos($response->getEmail(), $this->tenant) !== false) {
                     // We found an Admin !
                     $roles[] = new Role("ROLE_SUPER_ADMIN");
                     break;
                 }
             }
         }
         if (count($roles) == 0) {
             $this->flashBag->add("error", $response->getEmail() . " ne peut pas se connecter à cette application");
             throw new UsernameNotFoundException(sprintf("User '%s' has no power here!", $response->getRealName()));
         }
     }
     /** @var User $user */
     if ($user == null) {
         $user = $this->userManager->createUser();
     }
     $user->setRoles($roles);
     $user->setEmail($response->getEmail());
     $user->setEmailCanonical($response->getEmail());
     $user->setEnabled(true);
     $user->setUsername($response->getEmail());
     $user->setPlainPassword($response->getAccessToken());
     $user->setAzureAccessToken($response->getAccessToken());
     $user->setAzureRenewAccessToken($response->getRefreshToken());
     $this->userManager->updateUser($user);
     return $user;
 }
Esempio n. 27
0
 /**
  * {@inheritDoc}
  */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $rawResponse = $response->getResponse();
     $username = $response->getUsername();
     $screenName = $response->getNickname();
     $service = $response->getResourceOwner()->getName();
     $setter = 'set' . ucfirst($service);
     $setter_id = $setter . 'Id';
     $setter_token = $setter . 'AccessToken';
     $setter_username = $setter . 'Username';
     $newUser = false;
     $user = $this->userManager->findUserBy(array("{$service}Id" => $username));
     if (null === $user) {
         switch ($service) {
             case 'twitter':
                 $email = $this->session->get('twitter.email');
                 if (!$email) {
                     throw new MissingEmailException();
                 } else {
                     $this->session->remove('twitter.email');
                 }
                 $defaultUsername = "******";
                 break;
             case 'google':
                 $email = $rawResponse['email'];
                 $defaultUsername = $email;
                 break;
             default:
                 $email = $rawResponse['email'];
                 $defaultUsername = $email;
                 break;
         }
         $newUser = true;
         $user = $this->userManager->createUser();
         $user->{$setter_id}($username);
         $user->{$setter_token}($response->getAccessToken());
         $user->{$setter_username}($screenName);
         $fullName = explode(' ', $response->getRealName(), 2);
         if (isset($fullName[0][1]) && $fullName[0][1] != '') {
             $user->setFirstName($fullName[0]);
         }
         if (isset($fullName[1][1]) && $fullName[1][1] != '') {
             $user->setSurname($fullName[1]);
         }
         if (!UsernameValidator::isUsernameValid($screenName)) {
             $screenName = UsernameValidator::getValidUsername();
         }
         $availableUsername = $this->userManager->getNextAvailableUsername($screenName, 10, $defaultUsername);
         $user->setUsername($availableUsername);
         $user->setEmail($email);
         $user->setPassword('');
         $user->setEnabled(true);
         $this->userManager->updateCanonicalFields($user);
         $form = $this->formFactory->createForm();
         $form->setData($user);
         $request = $this->container->get('request');
         $eventResponse = new \Symfony\Component\HttpFoundation\RedirectResponse('/');
         $event = new FormEvent($form, $request);
         if ($newUser) {
             $this->dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
         }
         $this->userManager->updateUser($user);
         if ($newUser) {
             $this->dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $eventResponse));
         }
         return $user;
     }
     $user = parent::loadUserByOAuthUserResponse($response);
     $serviceName = $response->getResourceOwner()->getName();
     $setter = 'set' . ucfirst($serviceName) . 'AccessToken';
     $user->{$setter}($response->getAccessToken());
     return $user;
 }
Esempio n. 28
0
 private function parseResponse(UserResponseInterface $response)
 {
     return ['username' => $response->getResponse()['username'], 'id' => $response->getResponse()['id'], 'email' => $response->getResponse()['email'], 'groups' => array_merge([$response->getResponse()['group']], $response->getResponse()['group_others'])];
 }
Esempio n. 29
0
 /**
  * @param UserResponseInterface $response
  * @return User
  * @throws \InvalidArgumentException
  */
 public static function fromOAuthResponse(UserResponseInterface $response)
 {
     $user = new self();
     $user->setPassword('whatever');
     $user->setEnabled(true);
     switch ($response->getResourceOwner()->getName()) {
         case 'facebook':
             $user->setFacebookId($response->getResponse()['id']);
             $user->setUsername('fb-' . $response->getResponse()['id']);
             $user->setDisplayableName($response->getResponse()['name']);
             if (isset($response->getResponse()['email']) && $response->getResponse()['email']) {
                 $user->setEmail($response->getResponse()['email']);
             } else {
                 $user->setEmail('fb-no-email-' . md5(rand()) . '@example.com');
             }
             $user->setPictureUrl($response->getResponse()['picture']['data']['url']);
             break;
         case 'vkontakte':
             $responseInner = $response->getResponse()['response'][0];
             $user->setVkontakteId($responseInner['uid']);
             $user->setUsername('vk-' . $responseInner['uid']);
             $user->setDisplayableName($responseInner['first_name'] . ' ' . $responseInner['last_name']);
             if ($response->getResponse()['email']) {
                 $user->setEmail($response->getResponse()['email']);
             } else {
                 //in VK user can hide his email, but FOS treats email as mandatory
                 $user->setEmail('vk-hidden-email-' . md5(rand()) . '@example.com');
             }
             $user->setPictureUrl($responseInner['photo_medium']);
             break;
         case 'twitter':
             $user->setTwitterId($response->getResponse()['id']);
             $user->setUsername('twitter-' . $response->getResponse()['id']);
             $user->setDisplayableName($response->getResponse()['name']);
             $user->setEmail('twitter-email-' . md5(rand()) . '@example.com');
             $user->setPictureUrl($response->getResponse()['profile_image_url']);
             break;
         case 'google':
             $user->setGoogleId($response->getResponse()['id']);
             $user->setUsername('google-' . $response->getResponse()['id']);
             $user->setDisplayableName($response->getResponse()['name']);
             $user->setEmail($response->getResponse()['email']);
             $user->setPictureUrl($response->getResponse()['picture']);
             break;
         default:
             throw new \InvalidArgumentException(sprintf('Resource owner `%` is not supported', $response->getResourceOwner()->getName()));
     }
     return $user;
 }
 protected function getUserInformation(UserResponseInterface $response)
 {
     $result = ['type' => '', 'id' => '', 'username' => '', 'email' => '', 'avatar' => ''];
     $result['type'] = $response->getResourceOwner()->getName();
     switch ($result['type']) {
         case 'beam':
             $result['id'] = $response->getResponse()['id'];
             $result['username'] = $response->getNickname();
             $result['email'] = $response->getEmail();
             $result['avatar'] = $response->getResponse()['avatarUrl'];
             break;
         case 'twitch':
             $result['id'] = $response->getResponse()['_id'];
             $result['username'] = $response->getRealName();
             //HWIOAuthBundle sets RealName to the user's Twitch Username
             $result['email'] = $response->getEmail();
             $result['avatar'] = $response->getResponse()['logo'];
             break;
         case 'gamewisp':
             $result['id'] = $response->getResponse()['data']['id'];
             $result['username'] = $response->getNickname();
             break;
         default:
             throw new Exception(vsprintf("Unexpected type '%s", [$result['type']]));
     }
     if (empty($result['id']) === true || empty($result['username']) === true) {
         throw new Exception("ID and/or username could not be determined.");
     }
     $result['access_token'] = $this->getAccessTokenOrNull($result['type'], $result['username'], $response->getAccessToken());
     return $result;
 }