/** * Create ImapEmailFolder instances for each newly created EmailFolder related to UserEmailOrigin * * @param LifecycleEventArgs $event */ public function prePersist(LifecycleEventArgs $event) { $origin = $event->getObject(); if ($origin instanceof UserEmailOrigin && !$origin->getFolders()->isEmpty()) { $manager = $this->createManager($origin); $folders = $origin->getRootFolders(); $this->createImapEmailFolders($folders, $manager); } if ($origin instanceof UserEmailOrigin) { if ($origin->getAccessToken() && $origin->getRefreshToken() === null) { $response = $this->imapEmailGoogleOauth2Manager->getAccessTokenByAuthCode($origin->getGoogleAuthCode()); $origin->setRefreshToken($response['refresh_token']); } } }
/** * Get oauth2 access token by security code * * @param $code * * @return array */ public function getAccessToken($code) { $accessToken = $this->imapEmailGoogleOauth2Manager->getAccessTokenByAuthCode($code); $userInfo = $this->imapEmailGoogleOauth2Manager->getUserInfo($accessToken['access_token']); $userInfoResponse = $userInfo->getResponse(); if (array_key_exists('error', $userInfoResponse)) { $response = $userInfoResponse['error']; } else { $response = ['access_token' => $accessToken['access_token'], 'refresh_token' => $accessToken['refresh_token'], 'expires_in' => $accessToken['expires_in'], 'email_address' => $userInfo->getEmail()]; } return $response; }