oauth storing new refresh token

This commit is contained in:
Yuri Kuznetsov
2020-06-03 19:26:57 +03:00
parent 509b3affd1
commit a3aa74013a
2 changed files with 11 additions and 0 deletions

View File

@@ -71,11 +71,18 @@ class ClientManager
$externalAccountEntity->set('tokenType', $data['tokenType']);
$externalAccountEntity->set('expiresAt', $data['expiresAt'] ?? null);
if ($data['refreshToken'] ?? null) {
$externalAccountEntity->set('refreshToken', $data['refreshToken']);
}
$copy = $this->getEntityManager()->getEntity('ExternalAccount', $externalAccountEntity->id);
if ($copy) {
$copy->set('accessToken', $data['accessToken']);
$copy->set('tokenType', $data['tokenType']);
$copy->set('expiresAt', $data['expiresAt'] ?? null);
if ($data['refreshToken'] ?? null) {
$copy->set('refreshToken', $data['refreshToken'] ?? null);
}
$this->getEntityManager()->saveEntity($copy, ['isTokenRenewal' => true]);
}
}

View File

@@ -115,6 +115,10 @@ abstract class OAuth2Abstract implements IClient
$data['expiresAt'] = null;
if (isset($result['refresh_token']) && $result['refresh_token'] !== $this->refreshToken) {
$data['refreshToken'] = $result['refresh_token'];
}
if (isset($result['expires_in']) && is_numeric($result['expires_in'])) {
$data['expiresAt'] = (new \DateTime())
->modify('+' . $result['expires_in'] . ' seconds')