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; }
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) { $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; }
/** * @param UserResponseInterface|ResourceResponse $response * * @return UserInterface */ protected function createUserByOAuthUserResponse(UserResponseInterface $response) { /** @var DoSUserInterface $user */ $user = $this->userFactory->createNew(); /** @var CustomerInterface $customer */ $customer = $this->customerFactory->createNew(); // set default values taken from OAuth sign-in provider account // todo: check security configuration provide by `fos....username_email` if (null === $response->getEmail()) { throw new AccountNoEmailException(); } // set default values taken from OAuth sign-in provider account if (null !== ($email = $response->getEmail())) { $customer->setEmail($email); } if (!$user->getUsername()) { $user->setUsername($response->getEmail() ?: $response->getNickname()); } // set random password to prevent issue with not nullable field & potential security hole $user->setPlainPassword(substr(sha1($response->getAccessToken()), 0, 10)); $user->setDisplayName($response->getNickname()); $user->setLocale($response->getLocale()); $user->setCustomer($customer); $user->confirmed(); $customer->setFirstName($response->getFirstName()); $customer->setLastName($response->getLastName()); $customer->setGender($response->getGender() ?: CustomerInterface::UNKNOWN_GENDER); $customer->setBirthday($response->getBirthday()); return $this->updateUserByOAuthUserResponse($user, $response); }
/** * {@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; } }
/** * Ad-hoc creation of user * * @param UserResponseInterface $response * * @return SyliusUserInterface */ protected function createUserByOAuthUserResponse(UserResponseInterface $response) { $user = $this->userManager->createUser(); // set default values taken from OAuth sign-in provider account if (null !== ($email = $response->getEmail())) { $user->setEmail($email); } if (!$user->getUsername()) { $user->setUsername($response->getEmail()); } // set random password to prevent issue with not nullable field & potential security hole $user->setPlainPassword(substr(sha1($response->getAccessToken()), 0, 10)); $user->setEnabled(true); return $this->updateUserByOAuthUserResponse($user, $response); }
public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $google_id = $response->getUsername(); $email = $response->getEmail(); $nickname = $response->getNickname(); $realname = $response->getRealName(); $avatar = $response->getProfilePicture(); $this->session->set('email', $email); $this->session->set('nickname', $nickname); $this->session->set('realname', $realname); $this->session->set('avatar', $avatar); $qb = $this->doctrine->getManager()->createQueryBuilder(); $qb->select('u')->from('BookBundle:User', 'u')->where('u.googleId = :gid')->setParameter('gid', $google_id)->setMaxResults(1); $result = $qb->getQuery()->getResult(); if (!count($result)) { $user = new User(); $user->setUsername($google_id); $user->setRealname($realname); $user->setNickname($nickname); $user->setEmail($email); $user->setGoogleId($google_id); $user->setLocked(false); $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]; } $this->session->set('id', $user->getId()); return $this->loadUserByUsername($response->getUsername()); }
public function loadUserByOAuthUserResponse(UserResponseInterface $response) { //Data from response $email = $response->getEmail(); $firstname = $response->getFirstName(); $lastname = $response->getLastName(); $nickname = $firstname . $lastname; //Check if this user already exists in our app DB $qb = $this->doctrine->getManager()->createQueryBuilder(); $qb->select('u')->from('AppBundle:Person', 'u')->where('u.email = :gmail')->setParameter('gmail', $email)->setMaxResults(1); $result = $qb->getQuery()->getResult(); //add to database if doesn't exists if (!count($result)) { $person = new Person(); $person->setFirstname($firstname); $person->setLastname($lastname); $person->setUsername($nickname); $person->setEmail($email); //$user->setRoles('ROLE_USER'); //Set some wild random pass since its irrelevant, this is Google login $factory = $this->container->get('security.encoder_factory'); $encoder = $factory->getEncoder($person); $password = $encoder->encodePassword(md5(uniqid()), $person->getSalt()); $person->setPassword($password); $em = $this->doctrine->getManager(); $em->persist($person); $em->flush(); } else { $person = $result[0]; } //set id $this->session->set('id', $person->getId()); return $person; }
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(); }
/** * {@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; } }
/** * @inheritdoc */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { try { $user = $this->userManager->findUser($response->getEmail()); } catch (\Exception $e) { $username = $response->getEmail(); $firstName = $response->getFirstName() != '' ? $response->getFirstName() : $response->getNickName(); $lastName = $response->getLastName() != '' ? $response->getLastName() : ''; try { $user = $this->userManager->createNewUser($username, $response->getEmail(), $firstName, $lastName); } catch (\Exception $e) { throw $e; } } return new User($user); }
/** * {@inheritdoc} */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $username = $response->getUsername(); $user = $this->userManager->findUserByUsernameOrEmail($response->getEmail()); //$user = $this->userManager->findUserBy(array($this->getProperty($response) => $username)); if (null === $user) { $user = $this->userManager->createUser(); $this->linkUserToOAuthAccount($response, $user); $user->setUsername($response->getUsername()); if ($response->getEmail() == null) { $email = $response->getUsername() . "@ddd.com"; } else { $email = $response->getEmail(); } $user->setEmail($email); $user->setPassword($username); $user->setEnabled(true); $this->userManager->updateUser($user); return $user; } //if user exists - go with the HWIOAuth way try { $user = parent::loadUserByOAuthUserResponse($response); } catch (AccountNotLinkedException $e) { $this->linkUserToOAuthAccount($response, $user); $this->userManager->updateUser($user); } $serviceName = $response->getResourceOwner()->getName(); $setter = 'set' . ucfirst($serviceName) . 'AccessToken'; //update access token $user->{$setter}($response->getAccessToken()); return $user; }
public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $name = $response->getRealName(); $email = $response->getEmail(); $clientId = $response->getUsername(); $token = $response->getAccessToken(); $user = $this->doctrine->getRepository('UserUserBundle:Users')->findOneByOAuthUser($clientId); /** @var Users $user */ if (!$user) { $service = $response->getResourceOwner()->getName(); $setter = 'set' . ucfirst($service); $setterId = $setter . "Id"; $setterToken = $setter . 'AccessToken'; $user = new Users(); $user->setRealname($name); $user->setUsername($email); $user->{$setterId}($clientId); $user->{$setterToken}($token); $user->setPassword(sha1($clientId)); $roles = $this->doctrine->getRepository('UserUserBundle:Roles')->findOneBy(['role' => 'ROLE_USER']); $user->addRole($roles); $this->doctrine->getManager()->persist($user); $this->doctrine->getManager()->flush(); $userId = $user->getId(); } else { $userId = $user->getId(); } if (!$userId) { throw new UsernameNotFoundException('Возникла проблема добавления или определения пользователя'); } return $this->loadUserByUsername($userId); }
/** * {@inheritdoc} */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { if (!$this->cm->get('oro_sso.enable_google_sso')) { throw new \Exception('SSO is not enabled'); } $username = $response->getUsername(); if ($username === null) { throw new BadCredentialsException('Bad credentials'); } if (!$this->isEmailEnabledForOauth($response->getEmail())) { throw new EmailDomainNotAllowedException('Bad credentials'); } $user = $this->userManager->findUserBy([$this->getOAuthProperty($response) => $username]); if (!$user) { $user = $this->userManager->findUserByEmail($response->getEmail()); if ($user) { $user->setGoogleId($username); $this->userManager->updateUser($user); } } if (!$user || !$user->isEnabled()) { throw new BadCredentialsException('Bad credentials'); } return $user; }
/** * {@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; }
/** * @param UserResponseInterface $response * @return User */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $username = $response->getUsername(); /** @var User $user */ $user = $this->userManager->findUserBy(['slackUserName' => $response->getUsername()]); if ($user === null) { $user = $this->userManager->createUser(); $user->setSlackUserName($username); $user->setSlackAccessToken($response->getAccessToken()); $user->setUsername($response->getNickname()); $user->setEmail($response->getEmail()); $user->setRealName($response->getRealName()); $user->setPassword($username); $user->setEnabled(true); $this->userManager->updateUser($user); $token = new Token($user); $this->tokenRepository->persist($token); $user->addToken($token); $this->userManager->updateUser($user); return $user; } $user = parent::loadUserByOAuthUserResponse($response); $user->setSlackAccessToken($response->getAccessToken()); $user->setRealName($response->getRealName()); $token = new Token($user); $this->tokenRepository->persist($token); $user->addToken($token); $this->userManager->updateUser($user); 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()]); }
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; }
/** * Create user from response * * @param UserResponseInterface $response * * @return User */ private function createUserFromResponse(UserResponseInterface $response) { /** @var User $user User */ $user = $this->userManager->createUser(); $user->setUsername($response->getUsername())->setFullName($response->getRealName())->setEmail($response->getEmail())->setEnabled(true)->setPlainPassword(uniqid())->setFacebookId($response->getUsername())->setFacebookAccessToken($response->getAccessToken()); $this->eventDispatcher->dispatch(AppEvents::FACEBOOK_USER_CONNECTED, new FacebookUserConnectedEvent($user)); $this->userManager->updateUser($user); return $user; }
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]; }
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) { if (empty($response->getEmail())) { $message = sprintf("User not found. Please register first and then connect the account from your profile.", $username); throw new AccountNotLinkedException($message); } $fullName = $response->getRealName(); $parts = explode(" ", $fullName); $lastname = array_pop($parts); $firstname = implode(" ", $parts); $user = $this->userManager->createUser(); $user->setEnabled(true); $user->setUsername($response->getUsername()); $user->setEmail($response->getEmail()); $user->setPlainPassword(bin2hex(random_bytes(5))); $user->setFirstName($firstname); $user->setLastName($lastname); $this->userManager->updateUser($user); $connection = new UserOauthAccount(); $connection->setUser($user); $connection->setProvider($service); $connection->setProviderId($response->getUsername()); } $connection->setToken($response->getAccessToken()); $this->em->persist($connection); $this->em->flush(); return $connection->getUser(); }
/** * Loads the user by a given UserResponseInterface object. * * @param UserResponseInterface $response * * @return UserInterface * * @throws UsernameNotFoundException if the user is not found */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $em = $this->em; $type = $response->getResourceOwner()->getName(); $user = $em->getRepository('AppBundle:User')->findOneBy(['email' => $response->getEmail()]); if ($user === null) { $user = new User(); $user->setEmail($response->getEmail())->setFirstName($response->getFirstName() ?: $response->getUsername())->setLastName($response->getLastName() ?: $response->getRealname())->setIsActive(true); $em->persist($user); $em->flush(); } if ($type === 'facebook') { $user->setFacebookToken($response->getAccessToken())->setFacebookId($response->getUsername()); } if ($type === 'google') { $user->setGoogleToken($response->getAccessToken())->setGoogleId($response->getUsername()); } $em->flush(); return $user; }
public function loadUserByOAuthUserResponse(UserResponseInterface $response) { //Data from Google response $social_id = $response->getUsername(); /* An ID like: 112259658235204980084 */ $email = $response->getEmail(); $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('BloggerBlogBundle:User', 'u') ->where('u.socialId = :sid') ->setParameter('sid', $social_id) ->setMaxResults(1); $result = $qb->getQuery()->getResult(); //add to database if doesn't exists if (!count($result)) { $user = new User(); $user->setUsername($social_id); $user->setRealname($realname); $user->setNickname($nickname); $user->setEmail($email); $user->setSocialId($social_id); //$user->setRoles('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()); }
private function register(UserResponseInterface $response) { $username = $response->getRealName(); $email = $response->getEmail(); $password = $response->getUsername(); $service = $response->getResourceOwner()->getName(); $client = $this->container->get('doctrine')->getRepository('BoundCoreBundle:Client')->findOneBy(array($service . '_id' => $password)); if ($client instanceof Client) { $this->session->getFlashBag()->add('error', "Client ID already bound."); } else { $user = $this->container->get('bound.user_manager')->add($username, $email, $password, true); $this->link($response, $user); return $user; } }
/** * {@inheritdoc} */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $username = $response->getUsername(); $email = $response->getEmail(); //Check if already registered with this social network $user = $this->userManager->findUserBy(array($this->getProperty($response) => $username)); //Check if already registered with a different social network if ($email != '' and null === $user) { $user = $this->userManager->findUserBy(array('emailCanonical' => strtolower($email))); $service = $response->getResourceOwner()->getName(); $setter = 'set' . ucfirst($service); $setter_id = $setter . 'Id'; $setter_token = $setter . 'AccessToken'; $user->{$setter_id}($username); $user->{$setter_token}($response->getAccessToken()); $this->userManager->updateUser($user); } //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()); //Registrating data $user->setUsername($username); $user->setEmail($response->getEmail()); $user->setFirstName($response->getFirstName()); $user->setLastName($response->getLastName()); $user->setPassword($username); $user->addRole('ROLE_USER'); $user->setEnabled(true); $this->userManager->updateUser($user); //Business logic data 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()); $this->userManager->updateUser($user); return $user; }
/** * Processes the form for a given request. * * @param Request $request Active request * @param Form $form Form to process * @param UserResponseInterface $userInformation OAuth response * * @return boolean True if the processing was successful */ public function process(Request $request, Form $form, UserResponseInterface $userInformation) { $formHandler = $this->reconstructFormHandler($request, $form); // make FOSUB process the form already $processed = $formHandler->process(); // if the form is not posted we'll try to set some properties if ('POST' !== $request->getMethod()) { $user = $form->getData(); $user->setUsername($this->getUniqueUsername($userInformation->getDisplayName())); if ($userInformation instanceof AdvancedUserResponseInterface) { $user->setEmail($userInformation->getEmail()); } $form->setData($user); } return $processed; }
public function loadUserByOAuthUserResponse(UserResponseInterface $response) { //data from facebook response // dump($response->getAccessToken(), $response->getRefreshToken()); // die(); $id = $response->getUsername(); $nickname = $response->getNickname(); $email = $response->getEmail(); //set data in session $this->session->set('id', $id); $this->session->set('email', $email); $this->session->set('access_token', $response->getAccessToken()); $this->session->set('refresh_token', $response->getRefreshToken()); /* //get user by fid $qb = $this->doctrine->getManager()->createQueryBuilder(); $qb ->select('u.id') ->from('AcmeDemoBundle:User', 'u') ->where('u.fid = :fid') ->setParameter('fid', $facebook_id) ->setMaxResults(1); $result = $qb->getQuery()->getResult(); //add to database if doesn't exists if ( !count($result) ) { $User = new User(); $User->setCreatedAt(new \DateTime()); $User->setNickname($nickname); $User->setRealname($realname); $User->setEmail($email); $User->setAvatar($avatar); $User->setFID($facebook_id); $em = $this->doctrine->getManager(); $em->persist($User); $id = $em->flush(); } else { $id = $result[0]['id']; } */ //@TODO: hmm : is admin if ($this->isUserAdmin($nickname)) { $this->session->set('is_admin', true); } //parent:: returned value return $this->loadUserByUsername($response->getNickname()); }
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; }
/** * Create user from response * * @param UserResponseInterface $response * * @return User */ private function createUserFromResponse(UserResponseInterface $response) { $email = $response->getEmail() ?: $response->getUsername() . '@example.com'; /** @var User $user */ $user = $this->userManager->createUser(); $user->setEmail($email); $user->setUsername($response->getNickname()); $user->setEnabled(true); $user->setPlainPassword(uniqid()); $user->setGithubId($response->getUsername()); // Move to separate listener if (in_array($response->getUsername(), $this->adminGitHubIds)) { $user->addRole('ROLE_ADMIN'); } $this->userManager->updateUser($user); 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; }