PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / trunk
WP STAGING – WordPress Backups, Restore, Migration & Clone vtrunk
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 1 week ago ArrayableTrait.php 1 week ago BatchSizeCalculateTrait.php 1 week ago BearerTokenTrait.php 1 week ago BenchmarkTrait.php 1 week ago BooleanTransientTrait.php 1 week ago DatabaseSearchReplaceTrait.php 2 days ago DbRowsGeneratorTrait.php 1 week ago DebugLogTrait.php 1 week ago DeveloperTimerTrait.php 1 week ago EndOfLinePlaceholderTrait.php 1 week ago EventLoggerTrait.php 1 week ago FileScanToCacheTrait.php 1 week ago FormatTrait.php 1 week ago HttpRequestTrait.php 2 days ago HydrateTrait.php 1 week ago I18nTrait.php 1 week ago IpResolverTrait.php 1 week ago JobResponseTrait.php 1 week ago MaintenanceTrait.php 7 months ago MemoryExhaustTrait.php 1 week ago MySQLRowsGeneratorTrait.php 1 week ago NoticesTrait.php 1 week ago PagesTrait.php 1 week ago PropertyConstructor.php 1 week ago RenameTmpDirectoryTrait.php 1 week ago ResourceTrait.php 2 days ago RestRequestTrait.php 1 week ago RestoreFileExclusionTrait.php 1 week ago SafeFileInfoTrait.php 1 week ago SerializeTrait.php 2 days ago SetTimeLimitTrait.php 1 week ago SlashTrait.php 1 week ago SqlCommentTrait.php 1 week ago TablePrefixValidator.php 5 months ago ThrottledResponseTrait.php 2 days ago UrlTrait.php 1 week ago ValueGetterTrait.php 1 week ago WindowsOsTrait.php 1 week ago WordPressOptionNameTrait.php 2 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