Esempio n. 1
0
 /**
  * @return bool|string
  */
 public function insertRequest()
 {
     $repository = $this->entityManager->getRepository('BDNUserBundle:Login\\RequestToken');
     $key = StringUtils::generateRandomString(20, false);
     $tries = 0;
     while (($result = $repository->findOneBy(['key' => $key])) != null && $tries < 20) {
         $key = StringUtils::generateRandomString(20, false);
         $tries++;
     }
     if ($tries >= 20) {
         return false;
     }
     $token = new RequestToken();
     $token->setKey($key);
     $this->entityManager->persist($token);
     $this->entityManager->flush();
     return $key;
 }
Esempio n. 2
0
 /**
  * @param UserResponseInterface $response
  *
  * @return \FOS\UserBundle\Model\UserInterface|UserInterface
  */
 public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $userInfo = $this->parseResponse($response);
     $user = $this->userManager->findUserBy(['communityId' => $userInfo['id']]);
     if ($user === null) {
         $service = $response->getResourceOwner()->getName();
         $setter = 'set' . ucfirst($service);
         $setter_id = $setter . 'Id';
         $setter_token = $setter . 'AccessToken';
         /**
          * @var $user User
          */
         $user = $this->userManager->createUser();
         $user->{$setter_id}($userInfo['username']);
         $user->{$setter_token}($response->getAccessToken());
         $user->setUsername($userInfo['username']);
         $user->setEmail($userInfo['email']);
         $password = StringUtils::generateRandomString();
         $user->setPlainPassword($password);
         $password = $this->passwordEncoder->encodePassword($user, $user->getPlainPassword());
         $user->setPassword($password);
         $user->setEnabled(true);
         $user->setCommunityId($userInfo['id']);
         $user = $this->setGroups($user, $userInfo['groups']);
         $this->userManager->updateUser($user);
         if ($this->request->cookies->has(LoginRequestManager::KEY_COOKIE)) {
             $this->loginRequestManager->assignUserToKey($this->request->cookies->get(LoginRequestManager::KEY_COOKIE), $user);
         }
         return $user;
     } else {
         $user->setUsername($userInfo['username']);
         $user->setEmail($userInfo['email']);
         $user = $this->setGroups($user, $userInfo['groups']);
         if ($this->request->cookies->has(LoginRequestManager::KEY_COOKIE)) {
             $this->loginRequestManager->assignUserToKey($this->request->cookies->get(LoginRequestManager::KEY_COOKIE), $user);
         }
     }
     $serviceName = $response->getResourceOwner()->getName();
     $setter = 'set' . ucfirst($serviceName) . 'AccessToken';
     $user->{$setter}($response->getAccessToken());
     return $user;
 }