shell bypass 403
<?php
namespace MacsiDigital\OAuth2\Support\Token;
use MacsiDigital\OAuth2\Contracts\Token;
use MacsiDigital\OAuth2\Facades\Connection;
abstract class Base implements Token
{
protected $accessToken;
protected $refreshToken;
protected $expires;
protected $integration;
public function set($options)
{
foreach ($options as $key => $item) {
$this->$key = $item;
}
return $this;
}
public function setAccessToken($token)
{
$this->accessToken = $token;
return $this;
}
public function accessToken()
{
return $this->accessToken;
}
public function setRefreshToken($token)
{
$this->refreshToken = $token;
return $this;
}
public function refreshToken()
{
return $this->refreshToken;
}
public function setExpires($timeStamp)
{
$this->expires = $timeStamp;
return $this;
}
public function expires()
{
return $this->expires;
}
public function hasExpired()
{
return time() > $this->expires;
}
public function authenticated()
{
return $this->accessToken != null;
}
public function renewToken()
{
if ($this->hasExpired()) {
$config = config($this->integration);
$provider = Connection::withOptions(array_merge(['redirectUri' => route('oauth2.callback', ['integration' => $this->integration])], $config['oauth2']));
$accessToken = $provider->getAccessToken('refresh_token', [
'refresh_token' => $this->refreshToken(),
]);
$this->updateAccessToken($accessToken);
}
return $this;
}
public function updateAccessToken($accessToken)
{
$this->set([
'accessToken' => $accessToken->getToken(),
'refreshToken' => $accessToken->getRefreshToken(),
'expires' => $accessToken->getExpires(),
])->save();
return $this;
}
}