/**
  * @param $phoneNumber
  * @param $accessToken
  * @param $userInfo
  * @return null|string
  */
 public function updateUser($phoneNumber, $accessToken, $userInfo)
 {
     $em = $this->getDoctrine()->getManager();
     $user = null;
     try {
         $user = $em->getRepository('DomainBundle:User')->loadUserByUsername($userInfo->sub);
     } catch (UsernameNotFoundException $ex) {
         $this->get('logger')->debug("New user found with sub: {$userInfo->sub}");
     }
     if (!$user) {
         $roleUser = $em->getRepository('DomainBundle:Role')->loadRoleByName(Role::ROLE_USER);
         $user = new User();
         $user->setUsername($userInfo->sub);
         $em->persist($user);
         $user->addRole($roleUser);
         $em->persist($user);
         $em->flush();
     }
     $expireTime = new \DateTime();
     $expireTime->add(new \DateInterval("PT3600S"));
     $user->setExpireTime($expireTime);
     $user->setSharedSecret(uniqid("", true));
     $user->setAccessToken($accessToken->access_token);
     $user->setAccessTokenData(json_encode($accessToken));
     $user->setUserInfoData(json_encode($userInfo));
     $em->merge($user);
     $em->flush();
     return $user->getSharedSecret();
 }
Example #2
0
 private function getAccessToken(User $user)
 {
     $currentTime = new \DateTime();
     $accessToken = $user->getAccessToken();
     if ($currentTime >= $user->getExpireTime()) {
         $accessTokenData = json_decode($user->getAccessTokenData());
         $tokenResponse = $this->refreshToken($accessTokenData->refresh_token);
         $accessToken = $tokenResponse->access_token;
         $currentTime->add(new \DateInterval("PT3600S"));
         $user->setAccessToken($accessToken);
         $user->setExpireTime($currentTime);
         $user->setAccessTokenData(json_encode($tokenResponse));
         $this->entityManager->merge($user);
         $this->entityManager->flush();
     }
     return $accessToken;
 }