/** * @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(); }
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; }