/** * {@inheritdoc} */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $username = $response->getUsername(); $useremail = $response->getEmail(); // get facebook email id $user = $this->userManager->findUserByEmail($useremail); //$user = $this->userManager->findUserBy(array($this->getProperty($response) => $useremail)); //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()); $user->setUsername($useremail); $user->setEmail($useremail); $user->setPassword($username); $user->setEnabled(true); $this->userManager->updateUser($user); return $user; } $user = $this->userManager->findUserByEmail($useremail); $serviceName = $response->getResourceOwner()->getName(); $setter = 'set' . ucfirst($serviceName) . 'AccessToken'; //update access token $user->{$setter}($response->getAccessToken()); return $user; }
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; }
/** * {@inheritDoc} */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $username = $response->getUsername(); $email = $response->getEmail(); $nickname = $response->getRealName(); //var_dump($email); die(); $user = $this->userManager->findUserByUsernameOrEmail($email); //$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($nickname); $user->setEmail($email); $user->setPlainPassword($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, $email = "") { $useremail = $response->getEmail(); if ($useremail == "") { $useremail = $email; } if ($useremail != "") { $username = $useremail; } else { $username = $response->getUsername(); } /** @var User $user */ $user = $this->userManager->findUserByUsernameOrEmail($username); $service = $response->getResourceOwner()->getName(); $setterID = $service . "Id"; $setter = 'set' . ucfirst($service); $setter_id = $setter . 'Id'; $setter_token = $setter . 'AccessToken'; $getter = 'get' . ucfirst($service); $getter_id = $getter . 'Id'; //when the user is registrating if (null === $user) { if ($this->userManager->findUserBy(array($setterID => $response->getUsername())) != null) { $user = $this->userManager->findUserBy(array($setterID => $response->getUsername())); return $user; } else { // create new user here $user = $this->userManager->createUser(); $user->{$setter_id}($username); $user->{$setter_token}($response->getAccessToken()); $user->setUsername($username); $user->setFullname($response->getRealName()); if ($response->getResourceOwner()->getName() == 'facebook') { $user->setPhoto('https://graph.facebook.com/' . $response->getUsername() . '/picture?type=large'); } else { $user->setPhoto($response->getProfilePicture()); } $user->setPassword($username); $user->setEnabled(true); if (filter_var($response->getEmail(), FILTER_VALIDATE_EMAIL)) { $user->setEmail($response->getEmail()); $user->setConfirmationToken(null); } else { $user->setEmail($username); } $this->userManager->updateUser($user); return $user; } } else { $user->{$setter_id}($response->getUsername()); $user->{$setter_token}($response->getAccessToken()); $this->userManager->updateUser($user); 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; }
public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $serviceName = $response->getResourceOwner()->getName(); $data = array(); if ($serviceName == 'facebook') { $data = $this->getFacebookData($response); $user = $this->userManager->findUserBy(array($this->getProperty($response) => $data['id'])); } else { if ($serviceName == 'soundcloud') { $data = $this->getSoundcloudData($response); $user = $this->userManager->findUserBy(array($this->getProperty($response) => $data['id'])); } } $setService = 'set' . ucfirst($serviceName); $setServiceId = $setService . 'Id'; $setServiceToken = $setService . 'AccessToken'; if (null === $user) { $user = $this->userManager->createUser(); if ($serviceName == 'facebook') { $user = $this->setFacebookData($user, $data, $setServiceId, $setServiceToken); } else { if ($serviceName == 'soundcloud') { $user = $this->setSoundcloudData($user, $data, $setServiceId, $setServiceToken); } } $this->userManager->updateUser($user); return $user; } $user->{$setServiceToken}($response->getAccessToken()); return $user; }
/** * {@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) { 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; } }
/** * {@inheritdoc} */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $username = $response->getUsername(); $service = $response->getResourceOwner()->getName(); $user = $this->userManager->findUserBy(array($this->getProperty($response) => $username, 'auth_type' => $service)); //when the user is registrating if (null === $user) { $user = $this->userManager->createUser(); $user->setUid($username); $user->setAccessToken($response->getAccessToken()); $user->setAuthType($service); //I have set all requested data with the user's username //modify here with relevant data $user->setUsername($response->getRealName()); $user->setUsernameCanonical($username); $user->setEmail($response->getEmail()); if ($service == "facebook") { $user->setPicture("https://graph.facebook.com/{$username}/picture"); } else { $user->setPicture($response->getProfilePicture()); } $user->setPassword($username); $user->setEnabled(true); $this->userManager->updateUser($user); return $user; } //if user exists - go with the HWIOAuth way $user = parent::loadUserByOAuthUserResponse($response); //update access token $user->setAccessToken($response->getAccessToken()); return $user; }
public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $username = $response->getUsername(); $email = $response->getEmail(); $service = $response->getResourceOwner()->getName(); /** @var UserOauthAccount $connection */ $connection = $this->em->getRepository('OjsUserBundle:UserOauthAccount')->findOneBy(['providerId' => $username, 'provider' => $service]); if (!$connection && !empty($email)) { $userByEmail = $this->userManager->findUserByEmail($email); if ($userByEmail) { $connection = new UserOauthAccount(); $connection->setUser($userByEmail); $connection->setProvider($service); $connection->setProviderId($response->getUsername()); } } if (!$connection || $connection->getUser() === null) { $message = sprintf("User not found. Please register first and then connect the account from your profile.", $username); throw new AccountNotLinkedException($message); } $connection->setToken($response->getAccessToken()); $this->em->persist($connection); $this->em->flush(); return $connection->getUser(); }
/** * @param UserResponseInterface $response * @return mixed * @throws OAuthAwareException */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $tokenLoggedUser = $this->container->get('security.token_storage')->getToken(); $oauthServiceName = $response->getResourceOwner()->getName(); $oauthServiceUserId = $response->getUsername(); $oauthServiceAccessToken = $response->getAccessToken(); $user = $this->entityManager->getRepository('AppBundle:User')->findOneBy(array($oauthServiceName . '_id' => $oauthServiceUserId)); $setter = 'set' . ucfirst($oauthServiceName); $setter_id = $setter . 'Id'; $setter_token = $setter . 'AccessToken'; if (null === $user) { if (null === $tokenLoggedUser) { throw new AccountNotLinkedException(sprintf('Not linked "%s" account could be found', $oauthServiceName)); } $currentLoggedUser = $tokenLoggedUser->getUser(); if (in_array('ROLE_ADMIN', $currentLoggedUser->getRoles())) { $currentLoggedUser->{$setter_id}($oauthServiceUserId); $currentLoggedUser->{$setter_token}($oauthServiceAccessToken); $this->entityManager->persist($currentLoggedUser); $this->entityManager->flush(); $user = $this->entityManager->getRepository('AppBundle:User')->find($currentLoggedUser->getId()); return $user; } else { throw new OAuthAwareException(sprintf('Only users with role "ROLE_ADMIN" can link OAuth accounts.', $oauthServiceName)); } } else { $user->{$setter_token}($response->getAccessToken()); $this->entityManager->persist($user); $this->entityManager->flush(); return $user; } }
/** * {@inheritdoc} */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $resourceOwner = $response->getResourceOwner(); if (!$resourceOwner instanceof FacebookResourceOwner) { throw new UnsupportedUserException('Only Facebook users are supported'); } return $this->loadUserByData(['userId' => $response->getUsername(), 'service' => 'facebook', 'username' => $response->getNickname(), 'realname' => $response->getRealName(), 'email' => $response->getEmail(), 'picture' => $response->getProfilePicture()]); }
/** * Gets the property for the response. * * @param UserResponseInterface $response * * @return string * * @throws \RuntimeException */ protected function getProperty(UserResponseInterface $response) { $resourceOwnerName = $response->getResourceOwner()->getName(); if (!isset($this->properties[$resourceOwnerName])) { throw new \RuntimeException(sprintf("No property defined for entity for resource owner '%s'.", $resourceOwnerName)); } return $this->properties[$resourceOwnerName]; }
/** * @return User * @throws InvalidArgumentException if no user is found */ public function findByOAuthResponse(UserResponseInterface $oAuthResponse) { $foundUser = $this->doctrineUserRepo->findOneBy(['oAuthProviderClass' => get_class($oAuthResponse->getResourceOwner()), 'oAuthId' => $oAuthResponse->getUsername()]); if (null === $foundUser) { throw new \InvalidArgumentException("user not found"); } return $foundUser; }
/** * {@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); }
public function buildBasedOnOAuthResponse(UserResponseInterface $response) { $user = new UserImpl(); $user->setOAuthAccessToken($response->getAccessToken()); $user->setOAuthId($response->getUsername()); $user->setOAuthProviderClass(get_class($response->getResourceOwner())); $user->setUsername($response->getEmail()); return $user; }
public function __construct(UserResponseInterface $response) { parent::__construct($response->getUsername()); $this->data = array('provider' => $response->getResourceOwner()->getName(), 'providerId' => $response->getUsername()); $vars = array('nickname', 'realname', 'email', 'profilePicture', 'accessToken', 'refreshToken', 'tokenSecret', 'expiresIn'); foreach ($vars as $v) { $fct = 'get' . ucfirst($v); $this->data[$v] = $response->{$fct}(); } }
public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $resourceOwnerName = $response->getResourceOwner()->getName(); foreach ($this->responseHandlers as $responseHandler) { if ($responseHandler->handlesResourceOwner($resourceOwnerName)) { return $responseHandler->handleResponse($response, $this->userService); } } throw new \Exception("Unsupported oauth type: " . $resourceOwnerName); }
/** * @param UserResponseInterface $response * @param $user */ private function linkUserToOAuthAccount(UserResponseInterface $response, UserInterface $user) { $username = $response->getUsername(); $service = $response->getResourceOwner()->getName(); $setter = 'set' . ucfirst($service); $setter_id = $setter . 'Id'; $setter_token = $setter . 'AccessToken'; // create new user here $user->{$setter_id}($username); $user->{$setter_token}($response->getAccessToken()); }
/** * Attach OAuth sign-in provider account to existing user * * @param FOSUserInterface $user * @param UserResponseInterface $response * * @return FOSUserInterface */ protected function updateUserByOAuthUserResponse(FOSUserInterface $user, UserResponseInterface $response) { $providerName = $response->getResourceOwner()->getName(); $providerNameSetter = 'set' . ucfirst($providerName) . 'Id'; $user->{$providerNameSetter}($response->getUsername()); if (!$user->getPassword()) { // generate unique token $secret = md5(uniqid(rand(), true)); $user->setPassword($secret); } return $user; }
/** * Attach OAuth sign-in provider account to existing user * * @param FOSUserInterface $user * @param UserResponseInterface $response * * @return FOSUserInterface */ protected function updateUserByOAuthUserResponse(FOSUserInterface $user, UserResponseInterface $response) { $providerName = $response->getResourceOwner()->getName(); $providerNameSetter = 'set' . ucfirst($providerName) . 'Id'; $user->{$providerNameSetter}($response->getUsername()); /** Is for accept OAuth connexion without password **/ if (!$user->getPassword()) { $secret = md5(uniqid(rand(), true)); $user->setPassword($secret); } return $user; }
/** * {@inheritdoc} */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $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->findUser(array($this->properties[$resourceOwnerName] => $username)))) { throw new UsernameNotFoundException(sprintf("User '%s' not found.", $username)); } return $user; }
/** * @param UserResponseInterface $response * @return User|mixed * @throws \Doctrine\ORM\NonUniqueResultException */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $socialId = $response->getUsername(); $service = $response->getResourceOwner()->getName(); $username = sprintf('%s-%s', $service, $socialId); $email = $response->getEmail(); // hack for twitter not returning email if (null === $email || $email === "") { $service = $response->getResourceOwner()->getName(); $email = "{$username}@{$service}.test"; } switch ($service) { case 'google': $property = 'googleId'; break; case 'facebook': $property = 'facebookId'; break; case 'twitter': $property = 'twitterId'; break; } $qb = $this->em->createQueryBuilder(); $user = $qb->select("u")->from("AppBundle:User", "u")->where("u.email = :email")->orWhere("u.{$property} = :socialId")->setParameter("email", $email)->setParameter("socialId", $socialId)->getQuery()->getOneOrNullResult(); if ($user === null) { $user = new User(); $user->setUsername($username); $user->setEmail($email); $user->{'set' . $property}($socialId); // generate random password $factory = $this->encoderFactory->getEncoder($user); $password = $factory->encodePassword(md5(uniqid(mt_rand(), true)), $user->getSalt()); $user->setPassword($password); $this->em->persist($user); $this->em->flush(); } return $user; }
/** * {@inheritdoc} */ protected function updateUserByOAuthUserResponse(UserInterface $user, UserResponseInterface $response) { /** @var UserOAuthInterface $oauth */ $oauth = $this->oauthFactory->createNew(); $oauth->setIdentifier($response->getUsername()); $oauth->setProvider($response->getResourceOwner()->getName()); $oauth->setAccessToken($response->getAccessToken()); $oauth->setProfilePicture($response->getProfilePicture()); /* @var DoSUserInterface $user */ $user->addOAuthAccount($oauth); $this->userManager->persist($user); $this->userManager->flush(); return $user; }
/** * {@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 loadUserByOAuthUserResponse(UserResponseInterface $response) { $resource = $response->getResourceOwner()->getName(); $resource_id = $response->getUsername(); $user = $this->em->getRepository('NaidusvoeBundle:User')->findOneBy([$resource => $resource_id]); if ($user === null) { $user = $this->em->getRepository('NaidusvoeBundle:User')->findOneBy(['email' => $response->getEmail()]); if ($user === null) { $user = $this->userProvider->oAuthSignUp($response); } else { $user->setResource($resource, $resource_id); $this->em->persist($user); $this->em->flush(); } } return $user; }
/** * 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; }
public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $providerId = $this->getProviderIdFromName($response->getResourceOwner()->getName()); $identifier = $response->getUsername(); $username = $providerId . '-' . $identifier; $user = $this->userMapper->fetchUserByUsername($username); if (!$user) { $oauth = $this->getUserOauthNew($providerId); $oauth->setIdentifier($identifier); $oauth->setNickname($response->getNickname()); $user = $this->getUserNew(); $user->setUsername($username); $user->setOauthOnly(1); $user->addOauth($oauth); $this->userMapper->save($user); } return $user; }