/** * @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); }
/** * @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); }
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; }
/** * {@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; } }
/** * 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; }
protected function loadGoogleUser(UserResponseInterface $response) { $user = $this->userManager->createUser(); $user->setUsername($response->getUsername()); $user->setEmail($response->getEmail()); $user->setLastName($response->getLastName()); $user->setFirstName($response->getFirstname()); $user->setType($response->getResourceOwner()->getName()); $user->setAccessToken($response->getAccessToken()); $user->setLocale($response->getLocale()); if (is_null($user->getLocale())) { $user->setLocale('fr'); } $user->setRoles(['ROLE_USER']); $user->setPassword(''); $user->setEnabled(true); $user->setCreatedAt(new \DateTime()); $user->setUpdatedAt(new \DateTime()); $this->userManager->updateUser($user); return $user; }
/** * {@inheritdoc} */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $user = new WebHomeUser($response->getNickname(), null, $response->getFirstName(), $response->getLastName(), $response->getLocale(), $response->getAccessToken(), $response->getRefreshToken()); $user->initRolesAndApplications($response->getRoles()); return $user; }