PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.11.0
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.11.0
4.11.0 4.10.0 4.9.5 4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Framework / Security / AccessToken.php
wp-staging / Framework / Security Last commit date
Otp 1 day ago AccessToken.php 1 day ago Auth.php 1 day ago Capabilities.php 1 day ago DataEncryption.php 1 day ago EncryptionNoticeService.php 1 day ago Nonce.php 1 day ago UniqueIdentifier.php 1 day ago
AccessToken.php
149 lines
1 <?php
2
3 namespace WPStaging\Framework\Security;
4
5
6
7
8
9
10
11
12
13
14 class AccessToken
15 {
16
17
18
19 const REQUEST_KEY = 'accessToken';
20
21
22
23
24 const OPTION_NAME = 'wpstg_access_token';
25
26
27
28
29 private $isCheckCapabilities = true;
30
31
32
33
34
35 public function setIsCheckCapabilities(bool $isCheckCapabilities = true)
36 {
37 $this->isCheckCapabilities = $isCheckCapabilities;
38 }
39
40
41
42
43 public function requestHasValidToken()
44 {
45 return isset($_REQUEST[self::REQUEST_KEY]) && $this->isValidToken(sanitize_text_field($_REQUEST[self::REQUEST_KEY]));
46 }
47
48
49
50
51
52
53 public function generateNewToken()
54 {
55
56 if ($this->isCheckCapabilities && !$this->currentUserCanManageWPSTG()) {
57 return false;
58 }
59
60 $newToken = wp_generate_password(64, false);
61
62
63 if (strlen($newToken) !== 64) {
64 return false;
65 }
66
67
68
69
70 $sanitizedToken = str_ireplace('0x', 'ax', $newToken);
71
72 update_option(static::OPTION_NAME, $sanitizedToken);
73
74 return $sanitizedToken;
75 }
76
77
78
79
80
81
82 public function setToken($newToken)
83 {
84
85 if ($this->isCheckCapabilities && !$this->currentUserCanManageWPSTG()) {
86 return false;
87 }
88
89
90 if (strlen($newToken) !== 64) {
91 return false;
92 }
93
94 update_option(static::OPTION_NAME, $newToken);
95
96 return $newToken;
97 }
98
99
100
101
102
103
104
105 public function getToken()
106 {
107
108 if ($this->isCheckCapabilities && !$this->currentUserCanManageWPSTG()) {
109 return false;
110 }
111
112 return (string)get_option(static::OPTION_NAME, null);
113 }
114
115
116
117
118
119
120
121
122 public function isValidToken($tokenToValidate)
123 {
124 $tokenToValidate = (string)$tokenToValidate;
125
126
127 if (empty($tokenToValidate) || strlen($tokenToValidate) !== 64) {
128 return false;
129 }
130
131 $savedToken = (string)get_option(static::OPTION_NAME, null);
132
133
134 if (empty($savedToken)) {
135 return false;
136 }
137
138 return $tokenToValidate === $savedToken;
139 }
140
141
142
143
144 private function currentUserCanManageWPSTG()
145 {
146 return current_user_can((new Capabilities())->manageWPSTG());
147 }
148 }
149