mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-19 07:12:26 +02:00
N°8834 - Add compatibility with PHP 8.4 (#819)
* N°8834 - Add compatibility with PHP 8.4 * Rollback of scssphp/scssphp version upgrade due to compilation error
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2013-2020 Alex Bilbie <hello@alexbilbie.com>
|
||||
Copyright (c) 2013-2023 Alex Bilbie <hello@alexbilbie.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -24,14 +24,16 @@ This package is compliant with [PSR-1][], [PSR-2][], [PSR-4][], and [PSR-7][]. I
|
||||
|
||||
We support the following versions of PHP:
|
||||
|
||||
* PHP 8.5
|
||||
* PHP 8.4
|
||||
* PHP 8.3
|
||||
* PHP 8.2
|
||||
* PHP 8.1
|
||||
* PHP 8.0
|
||||
* PHP 7.4
|
||||
* PHP 7.3
|
||||
* PHP 7.2
|
||||
* PHP 7.1
|
||||
* PHP 7.0
|
||||
* PHP 5.6
|
||||
|
||||
## Provider Clients
|
||||
|
||||
|
||||
@@ -6,15 +6,15 @@
|
||||
"sort-packages": true
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.6 || ^7.0 || ^8.0",
|
||||
"guzzlehttp/guzzle": "^6.0 || ^7.0",
|
||||
"paragonie/random_compat": "^1 || ^2 || ^9.99"
|
||||
"php": "^7.1 || >=8.0.0 <8.6.0",
|
||||
"ext-json": "*",
|
||||
"guzzlehttp/guzzle": "^6.5.8 || ^7.4.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "^1.3.5",
|
||||
"php-parallel-lint/php-parallel-lint": "^1.3.1",
|
||||
"phpunit/phpunit": "^5.7 || ^6.0 || ^9.5",
|
||||
"squizlabs/php_codesniffer": "^2.3 || ^3.0"
|
||||
"php-parallel-lint/php-parallel-lint": "^1.4",
|
||||
"phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11",
|
||||
"squizlabs/php_codesniffer": "^3.11"
|
||||
},
|
||||
"keywords": [
|
||||
"oauth",
|
||||
@@ -49,10 +49,5 @@
|
||||
"psr-4": {
|
||||
"League\\OAuth2\\Client\\Test\\": "test/src/"
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-2.x": "2.0.x-dev"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace League\OAuth2\Client\Provider;
|
||||
use GuzzleHttp\Client as HttpClient;
|
||||
use GuzzleHttp\ClientInterface as HttpClientInterface;
|
||||
use GuzzleHttp\Exception\BadResponseException;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use InvalidArgumentException;
|
||||
use League\OAuth2\Client\Grant\AbstractGrant;
|
||||
use League\OAuth2\Client\Grant\GrantFactory;
|
||||
@@ -405,6 +406,7 @@ abstract class AbstractProvider
|
||||
*
|
||||
* @param array $options
|
||||
* @return array Authorization parameters
|
||||
* @throws InvalidArgumentException
|
||||
*/
|
||||
protected function getAuthorizationParameters(array $options)
|
||||
{
|
||||
@@ -476,6 +478,7 @@ abstract class AbstractProvider
|
||||
*
|
||||
* @param array $options
|
||||
* @return string Authorization URL
|
||||
* @throws InvalidArgumentException
|
||||
*/
|
||||
public function getAuthorizationUrl(array $options = [])
|
||||
{
|
||||
@@ -492,10 +495,11 @@ abstract class AbstractProvider
|
||||
* @param array $options
|
||||
* @param callable|null $redirectHandler
|
||||
* @return mixed
|
||||
* @throws InvalidArgumentException
|
||||
*/
|
||||
public function authorize(
|
||||
array $options = [],
|
||||
callable $redirectHandler = null
|
||||
?callable $redirectHandler = null
|
||||
) {
|
||||
$url = $this->getAuthorizationUrl($options);
|
||||
if ($redirectHandler) {
|
||||
@@ -613,13 +617,20 @@ abstract class AbstractProvider
|
||||
*
|
||||
* @param mixed $grant
|
||||
* @param array<string, mixed> $options
|
||||
* @throws IdentityProviderException
|
||||
* @return AccessTokenInterface
|
||||
* @throws IdentityProviderException
|
||||
* @throws UnexpectedValueException
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function getAccessToken($grant, array $options = [])
|
||||
{
|
||||
$grant = $this->verifyGrant($grant);
|
||||
|
||||
if (isset($options['scope']) && is_array($options['scope'])) {
|
||||
$separator = $this->getScopeSeparator();
|
||||
$options['scope'] = implode($separator, $options['scope']);
|
||||
}
|
||||
|
||||
$params = [
|
||||
'client_id' => $this->clientId,
|
||||
'client_secret' => $this->clientSecret,
|
||||
@@ -700,6 +711,7 @@ abstract class AbstractProvider
|
||||
*
|
||||
* @param RequestInterface $request
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function getResponse(RequestInterface $request)
|
||||
{
|
||||
@@ -710,8 +722,10 @@ abstract class AbstractProvider
|
||||
* Sends a request and returns the parsed response.
|
||||
*
|
||||
* @param RequestInterface $request
|
||||
* @throws IdentityProviderException
|
||||
* @return mixed
|
||||
* @throws IdentityProviderException
|
||||
* @throws UnexpectedValueException
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function getParsedResponse(RequestInterface $request)
|
||||
{
|
||||
@@ -757,7 +771,7 @@ abstract class AbstractProvider
|
||||
*/
|
||||
protected function getContentType(ResponseInterface $response)
|
||||
{
|
||||
return join(';', (array) $response->getHeader('content-type'));
|
||||
return implode(';', $response->getHeader('content-type'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -815,7 +829,7 @@ abstract class AbstractProvider
|
||||
* Custom mapping of expiration, etc should be done here. Always call the
|
||||
* parent method when overloading this method.
|
||||
*
|
||||
* @param mixed $result
|
||||
* @param array<string, mixed> $result
|
||||
* @return array
|
||||
*/
|
||||
protected function prepareAccessTokenResponse(array $result)
|
||||
@@ -859,6 +873,9 @@ abstract class AbstractProvider
|
||||
*
|
||||
* @param AccessToken $token
|
||||
* @return ResourceOwnerInterface
|
||||
* @throws IdentityProviderException
|
||||
* @throws UnexpectedValueException
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function getResourceOwner(AccessToken $token)
|
||||
{
|
||||
@@ -872,6 +889,9 @@ abstract class AbstractProvider
|
||||
*
|
||||
* @param AccessToken $token
|
||||
* @return mixed
|
||||
* @throws IdentityProviderException
|
||||
* @throws UnexpectedValueException
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
protected function fetchResourceOwnerDetails(AccessToken $token)
|
||||
{
|
||||
|
||||
@@ -22,7 +22,7 @@ use RuntimeException;
|
||||
*
|
||||
* @link http://tools.ietf.org/html/rfc6749#section-1.4 Access Token (RFC 6749, §1.4)
|
||||
*/
|
||||
class AccessToken implements AccessTokenInterface, ResourceOwnerAccessTokenInterface
|
||||
class AccessToken implements AccessTokenInterface, ResourceOwnerAccessTokenInterface, SettableRefreshTokenInterface
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
@@ -118,7 +118,7 @@ class AccessToken implements AccessTokenInterface, ResourceOwnerAccessTokenInter
|
||||
} elseif (!empty($options['expires'])) {
|
||||
// Some providers supply the seconds until expiration rather than
|
||||
// the exact timestamp. Take a best guess at which we received.
|
||||
$expires = $options['expires'];
|
||||
$expires = (int) $options['expires'];
|
||||
|
||||
if (!$this->isExpirationTimestamp($expires)) {
|
||||
$expires += $this->getTimeNow();
|
||||
@@ -169,6 +169,14 @@ class AccessToken implements AccessTokenInterface, ResourceOwnerAccessTokenInter
|
||||
return $this->refreshToken;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function setRefreshToken($refreshToken)
|
||||
{
|
||||
$this->refreshToken = $refreshToken;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
@@ -196,7 +204,7 @@ class AccessToken implements AccessTokenInterface, ResourceOwnerAccessTokenInter
|
||||
throw new RuntimeException('"expires" is not set on the token');
|
||||
}
|
||||
|
||||
return $expires < time();
|
||||
return $expires < $this->getTimeNow();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user