/** * @param UserEmailOrigin $origin * * @return string */ public function getAccessTokenWithCheckingExpiration(UserEmailOrigin $origin) { $expiresAt = $origin->getAccessTokenExpiresAt(); $utcTimeZone = new \DateTimeZone('UTC'); $now = new \DateTime('now', $utcTimeZone); $token = $origin->getAccessToken(); //if token had been expired, the new one must be generated and saved to DB if ($now > $expiresAt && $this->configManager->get('oro_imap.enable_google_imap')) { $parameters = ['refresh_token' => $origin->getRefreshToken(), 'grant_type' => 'refresh_token']; $attemptNumber = 0; do { $attemptNumber++; $response = $this->doHttpRequest($parameters); if (!empty($response['access_token'])) { $token = $response['access_token']; $origin->setAccessToken($token); $newExpireDate = new \DateTime('+' . $response['expires_in'] . ' seconds', $utcTimeZone); $origin->setAccessTokenExpiresAt($newExpireDate); $this->doctrine->getManager()->persist($origin); $this->doctrine->getManager()->flush(); } } while ($attemptNumber <= self::RETRY_TIMES && empty($response['access_token'])); } return $token; }
public function testExtendForm() { $form = $this->getMockBuilder('Symfony\\Component\\Form\\Form')->disableOriginalConstructor()->getMock(); $form->expects($this->exactly(2))->method('add')->will($this->returnSelf()); $form->expects($this->once())->method('remove')->will($this->returnSelf()); $userEmailOrigin = new UserEmailOrigin(); $userEmailOrigin->setAccessToken('test_string_token'); $formEvent = new FormEvent($form, $userEmailOrigin); $this->listener->extendForm($formEvent); }
/** * @param string $password * @param string $accessToken * * @dataProvider setDataProviderSmtpConfiguredSuccess */ public function testIsSmtpConfiguredSuccess($password, $accessToken) { $origin = new UserEmailOrigin(); $origin->setSmtpHost('host'); $origin->setSmtpPort(25); $origin->setUser('test'); $origin->setPassword($password); $origin->setAccessToken($accessToken); $origin->setSmtpEncryption('ssl'); $this->assertTrue($origin->isSmtpConfigured()); }
/** * @param FormEvent $formEvent */ public function setToken(FormEvent $formEvent) { $form = $formEvent->getForm(); /** @var UserEmailOrigin $emailOrigin */ $emailOrigin = $form->getData(); if (null === $emailOrigin || null === $emailOrigin->getAccessToken()) { $data = $formEvent->getData(); if (null == $data) { return; } $emailOrigin = new UserEmailOrigin(); $emailOrigin->setAccessToken($data['accessToken']); } if ($emailOrigin instanceof UserEmailOrigin) { $this->updateForm($form, $emailOrigin); } }
/** * @param UserEmailOrigin $origin * * @return mixed */ public function getAccessToken(UserEmailOrigin $origin) { $utcTimeZone = new \DateTimeZone('UTC'); $parameters = ['refresh_token' => $origin->getRefreshToken(), 'grant_type' => 'refresh_token']; $attemptNumber = 0; do { $attemptNumber++; $response = $this->doHttpRequest($parameters); if (!empty($response['access_token'])) { $token = $response['access_token']; $origin->setAccessToken($token); $newExpireDate = new \DateTime('+' . ((int) $response['expires_in'] - 5) . ' seconds', $utcTimeZone); $origin->setAccessTokenExpiresAt($newExpireDate); $this->doctrine->getManager()->persist($origin); $this->doctrine->getManager()->flush(); return $token; } } while ($attemptNumber <= self::RETRY_TIMES && empty($response['access_token'])); throw new \Exception('Cannot refresh OAuth2 token for origin.'); }
/** * @param string $type * @param string|null $accessToken * @param string $formParentName * * @return FormInterface */ public function getImapConnectionForm($type, $accessToken, $formParentName) { $oauthEmailOrigin = new UserEmailOrigin(); $oauthEmailOrigin->setAccessToken($accessToken); if ($type === AccountTypeModel::ACCOUNT_TYPE_GMAIL) { $oauthEmailOrigin->setImapHost(GmailImap::DEFAULT_GMAIL_HOST); $oauthEmailOrigin->setImapPort(GmailImap::DEFAULT_GMAIL_PORT); } $accountTypeModel = $this->createAccountModel($type, $oauthEmailOrigin); return $this->prepareForm($formParentName, $accountTypeModel); }
/** * Return UserEmailOrigin entity created with data of $data variable */ protected function getUserEmailOrigin($data) { $userEmailOrigin = new UserEmailOrigin(); $userEmailOrigin->setUser($data['user']); $userEmailOrigin->setAccessTokenExpiresAt($data['accessTokenExpiresAt']); if (isset($data['password'])) { $userEmailOrigin->setPassword($data['password']); } if (isset($data['accessToken'])) { $userEmailOrigin->setAccessToken($data['accessToken']); } if (isset($data['refreshToken'])) { $userEmailOrigin->setRefreshToken($data['refreshToken']); } $organization = $this->getMock('Oro\\Bundle\\OrganizationBundle\\Entity\\Organization'); $userEmailOrigin->setOrganization($organization); return $userEmailOrigin; }