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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
/**
* SAL_Token class
*
* @package automattic/jetpack
*/
/**
* Base class for Jetpack_Site, so that we have a real class instead of just passing around an array.
*/
class SAL_Token {
/**
* The Jetpack blog ID for the site.
*
* @var int
*/
public $blog_id;
/**
* The Jetpack user's user ID.
*
* @var int
*/
public $user_id;
/**
* The scope for the token, for example global or auth.
*
* @var string
*/
public $scope;
/**
* The Client ID (or WordPress.com Blog ID of this site.
*
* @var int
*/
public $client_id;
/**
* The user ID on the local site.
*
* @var int
*/
public $external_user_id;
/**
* Used for tokens created by Oauth clients.
*
* @var string
*/
public $external_user_code;
/**
* The type of authorization based on where the Jetpack connection is made - eg 'calypso', 'jetpack', 'client'.
*
* @var string
*/
public $auth_type;
/**
* Contructs the SAL_Token instance.
*
* @param int $blog_id The Jetpack blog ID for the site.
* @param int $user_id The Jetpack user's user ID.
* @param string $scope The scope for the token, for example global or auth.
* @param int $client_id The Client ID (or WordPress.com Blog ID of this site.
* @param int $external_user_id The user ID on the local site.
* @param string $external_user_code Used for tokens created by Oauth clients.
* @param string $auth_type The type of authorization based on where the Jetpack connection is made (eg. calypso).
*/
public function __construct( $blog_id, $user_id, $scope, $client_id, $external_user_id, $external_user_code, $auth_type ) {
$this->blog_id = $blog_id; // if blog_id is set and scope is not global, limit to that blog.
$this->user_id = $user_id;
$this->client_id = $client_id;
$this->scope = $scope;
$this->external_user_id = $external_user_id;
$this->external_user_code = $external_user_code;
$this->auth_type = $auth_type;
}
/**
* Set's the scope variable to 'global'.
*
* @return string
*/
public function is_global() {
return $scope === 'global'; // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
}
/**
* This function is used to create a SAL_Token instance with only a user id, if a token doesn't already exist.
*
* @return SAL_Token
*/
public static function for_anonymous_user() {
return new SAL_Token(
null,
get_current_user_id(),
null, // there's only ever one scope in our current API implementation, auth or global.
null,
null,
null,
null
);
}
/**
* If a user token exists, the information is used to construct a SAL_Token with the correct parameters.
*
* @param array $token An array of details relevant to the connected user (may be empty).
*
* @return SAL_Token
*/
public static function from_rest_token( $token ) {
$user_id = isset( $token['user_id'] ) ? $token['user_id'] : get_current_user_id();
$scope = isset( $token['scope'] ) ? $token['scope'][0] : null;
$client_id = isset( $token['client_id'] ) ? $token['client_id'] : null;
$external_user_id = isset( $token['external_user_id'] ) ? $token['external_user_id'] : null;
$external_user_code = isset( $token['external_user_code'] ) ? $token['external_user_code'] : null;
$auth = isset( $token['auth'] ) ? $token['auth'] : null;
return new SAL_Token(
$token['blog_id'],
$user_id,
$scope, // there's only ever one scope in our current API implementation, auth or global.
$client_id,
$external_user_id,
$external_user_code,
$auth
);
}
}
|