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]; }
/** * {@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); }
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; }
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; }
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; } }
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; }
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()); }
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> 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()); }
/** * 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; }
/** * 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); }
/** * {@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; }
/** * {@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; }
/** * {@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; }
/** * {@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; }
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'])]; }
/** * @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; }