PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.11.2
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.11.2
4.11.2 4.11.1 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 / Traits / BearerTokenTrait.php
wp-staging / Framework / Traits Last commit date
ApplyFiltersTrait.php 2 weeks ago ArrayableTrait.php 2 weeks ago BatchSizeCalculateTrait.php 2 weeks ago BearerTokenTrait.php 2 weeks ago BenchmarkTrait.php 2 weeks ago BooleanTransientTrait.php 2 weeks ago DatabaseSearchReplaceTrait.php 5 days ago DbRowsGeneratorTrait.php 2 weeks ago DebugLogTrait.php 2 weeks ago DeveloperTimerTrait.php 2 weeks ago EndOfLinePlaceholderTrait.php 2 weeks ago EventLoggerTrait.php 2 weeks ago FileScanToCacheTrait.php 2 weeks ago FormatTrait.php 2 weeks ago HttpRequestTrait.php 5 days ago HydrateTrait.php 2 weeks ago I18nTrait.php 2 weeks ago IpResolverTrait.php 2 weeks ago JobResponseTrait.php 2 weeks ago MaintenanceTrait.php 7 months ago MemoryExhaustTrait.php 2 weeks ago MySQLRowsGeneratorTrait.php 2 weeks ago NoticesTrait.php 2 weeks ago PagesTrait.php 2 weeks ago PropertyConstructor.php 2 weeks ago RenameTmpDirectoryTrait.php 2 weeks ago ResourceTrait.php 5 days ago RestRequestTrait.php 2 weeks ago RestoreFileExclusionTrait.php 2 weeks ago SafeFileInfoTrait.php 2 weeks ago SerializeTrait.php 5 days ago SetTimeLimitTrait.php 2 weeks ago SlashTrait.php 2 weeks ago SqlCommentTrait.php 2 weeks ago TablePrefixValidator.php 5 months ago ThrottledResponseTrait.php 5 days ago UrlTrait.php 2 weeks ago ValueGetterTrait.php 2 weeks ago WindowsOsTrait.php 2 weeks ago WordPressOptionNameTrait.php 5 days ago
BearerTokenTrait.php
70 lines
1 <?php
2
3 namespace WPStaging\Framework\Traits;
4
5 use RuntimeException;
6
7
8
9
10 trait BearerTokenTrait
11 {
12 protected function getBearerToken(): string
13 {
14 $authHeader = $this->getAuthorizationHeaderFromRequest();
15 if (empty($authHeader) || !preg_match('/Bearer\s+(\S+)/', $authHeader, $matches)) {
16 return $this->getAuthTokenFromPluginHeader();
17 }
18
19 return sanitize_text_field($matches[1]);
20 }
21
22 protected function getAuthTokenFromPluginHeader(): string
23 {
24
25
26
27
28 $token = sanitize_text_field($_SERVER['HTTP_X_WPSTG_REQUEST'] ?? ''); // phpcs:ignore
29 if (empty($token) || !preg_match('/^[a-f0-9]{12,}$/i', $token)) {
30 throw new RuntimeException('Authorization header not found or invalid.', 401);
31 }
32
33 return $token;
34 }
35
36 private function getAuthorizationHeaderFromRequest(): string
37 {
38 $authHeader = '';
39 if (function_exists('getallheaders')) {
40 $authHeader = $this->extractAuthorizationHeader(getallheaders());
41 }
42
43 if (empty($authHeader) && function_exists('apache_request_headers')) {
44 $authHeader = $this->extractAuthorizationHeader(apache_request_headers());
45 }
46
47 if (empty($authHeader) && !empty($_SERVER['HTTP_AUTHORIZATION'])) {
48 $authHeader = sanitize_text_field($_SERVER['HTTP_AUTHORIZATION']); // phpcs:ignore
49 }
50
51 return $authHeader;
52 }
53
54
55
56
57 private function extractAuthorizationHeader(array $headers): string
58 {
59 foreach ($headers as $headerName => $headerValue) {
60 if (strtolower((string)$headerName) !== 'authorization') {
61 continue;
62 }
63
64 return sanitize_text_field((string)$headerValue);
65 }
66
67 return '';
68 }
69 }
70