| Server IP : 193.146.211.90 / Your IP : 10.85.6.55 Web Server : Apache System : Linux wordpress-gti-69dcdb54f7-n4wdq 6.11.8-arch1-2 #1 SMP PREEMPT_DYNAMIC Fri, 15 Nov 2024 15:35:07 +0000 x86_64 User : 1001 ( 1001) PHP Version : 8.2.25 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /bitnami/wordpress/wp-content/plugins/google-site-kit/includes/Core/Util/ |
Upload File : |
<?php
/**
* Class Google\Site_Kit\Core\Util\Scopes
*
* @package Google\Site_Kit\Core\Util
* @copyright 2021 Google LLC
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
* @link https://sitekit.withgoogle.com
*/
namespace Google\Site_Kit\Core\Util;
/**
* Utility class for handling generic OAuth scope functions.
*
* @since 1.9.0
* @access private
* @ignore
*/
class Scopes {
/**
* Mapping of requested scope to satisfying scopes.
*
* @since 1.9.0
*
* @var array
*/
protected static $map = array(
'https://www.googleapis.com/auth/adsense.readonly' => array(
'https://www.googleapis.com/auth/adsense',
),
'https://www.googleapis.com/auth/analytics.readonly' => array(
'requires_all' => true,
'https://www.googleapis.com/auth/analytics',
'https://www.googleapis.com/auth/analytics.edit',
),
'https://www.googleapis.com/auth/tagmanager.readonly' => array(
'https://www.googleapis.com/auth/tagmanager.edit.containers',
),
'https://www.googleapis.com/auth/webmasters.readonly' => array(
'https://www.googleapis.com/auth/webmasters',
),
);
/**
* Tests if the given scope is satisfied by the given list of granted scopes.
*
* @since 1.9.0
*
* @param string $scope OAuth scope to test for.
* @param string[] $granted_scopes Available OAuth scopes to test the individual scope against.
* @return bool True if the given scope is satisfied, otherwise false.
*/
public static function is_satisfied_by( $scope, array $granted_scopes ) {
if ( in_array( $scope, $granted_scopes, true ) ) {
return true;
}
if ( empty( self::$map[ $scope ] ) ) {
return false;
}
$satisfying_scopes = array_filter( self::$map[ $scope ], 'is_string' );
if ( ! empty( self::$map[ $scope ]['requires_all'] ) ) {
// Return true if all satisfying scopes are present, otherwise false.
return ! array_diff( $satisfying_scopes, $granted_scopes );
}
// Return true if any of the scopes are present, otherwise false.
return (bool) array_intersect( $satisfying_scopes, $granted_scopes );
}
/**
* Tests if all the given scopes are satisfied by the list of granted scopes.
*
* @since 1.9.0
*
* @param string[] $scopes OAuth scopes to test.
* @param string[] $granted_scopes OAuth scopes to test $scopes against.
* @return bool True if all given scopes are satisfied, otherwise false.
*/
public static function are_satisfied_by( array $scopes, array $granted_scopes ) {
foreach ( $scopes as $scope ) {
if ( ! self::is_satisfied_by( $scope, $granted_scopes ) ) {
return false;
}
}
return true;
}
}