1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
<?php
namespace Commercetools\Core\Client\OAuth;
class TokenStorageProvider implements RefreshTokenProvider
{
private $tokenStorage;
private $anonymousProvider;
public function __construct(TokenStorage $tokenStorage, AnonymousFlowTokenProvider $anonymousProvider)
{
$this->tokenStorage = $tokenStorage;
$this->anonymousProvider = $anonymousProvider;
}
public function refreshToken()
{
$token = $this->anonymousProvider->refreshToken();
$this->storeToken($token);
return $token;
}
public function getToken()
{
$token = $this->tokenStorage->getAccessToken();
if (!is_null($token)) {
return new Token($token);
}
if ($this->tokenStorage->getRefreshToken()) {
return $this->refreshToken();
}
$token = $this->anonymousProvider->getToken();
$this->storeToken($token);
return $token;
}
private function storeToken(Token $token)
{
$this->tokenStorage->setAccessToken($token->getToken());
$this->tokenStorage->setRefreshToken($token->getRefreshToken());
}
}