|
1 | 1 | <?php |
2 | 2 |
|
3 | 3 | use JohannSchopplich\Headless\Api\Api; |
| 4 | +use JohannSchopplich\Headless\Api\Middlewares; |
4 | 5 | use Kirby\Cms\App; |
5 | 6 | use Kirby\Data\Json; |
6 | 7 | use Kirby\Exception\NotFoundException; |
7 | 8 | use Kirby\Http\Url; |
8 | 9 | use Kirby\Toolkit\Str; |
9 | 10 |
|
10 | | -$validateOptionalBearerToken = function (array $context, array $args) { |
11 | | - $kirby = App::instance(); |
12 | | - $token = $kirby->option('headless.token'); |
13 | | - $authorization = $kirby->request()->header('Authorization'); |
14 | | - |
15 | | - if ( |
16 | | - !empty($token) && |
17 | | - (empty($authorization) || $authorization !== 'Bearer ' . $token) |
18 | | - ) { |
19 | | - return Api::createResponse(401); |
20 | | - } |
21 | | -}; |
22 | | - |
23 | 11 | return [ |
24 | | - 'routes' => function (App $kirby) use ($validateOptionalBearerToken) { |
| 12 | + 'routes' => function (App $kirby) { |
25 | 13 | $kqlAuthMethod = $kirby->option('kql.auth', true); |
26 | 14 |
|
27 | 15 | return [ |
|
44 | 32 | 'auth' => !in_array($kqlAuthMethod, [false, 'bearer'], true), |
45 | 33 | 'action' => Api::createHandler( |
46 | 34 | // Middleware to validate the bearer token |
47 | | - function (array $context, array $args) use ($kirby, $kqlAuthMethod) { |
| 35 | + function (array $context, array $args) use ($kqlAuthMethod) { |
48 | 36 | if ($kqlAuthMethod !== 'bearer') { |
49 | 37 | return; |
50 | 38 | } |
51 | 39 |
|
52 | | - $token = $kirby->option('headless.token'); |
53 | | - $authorization = $kirby->request()->header('Authorization'); |
54 | | - |
55 | | - if ($authorization !== 'Bearer ' . $token) { |
56 | | - return Api::createResponse(401); |
57 | | - } |
| 40 | + return Middlewares::validateBearerToken(); |
58 | 41 | }, |
59 | 42 | // Middleware to run queries and cache their results |
60 | 43 | function (array $context, array $args) use ($kirby) { |
@@ -96,7 +79,7 @@ function (array $context, array $args) use ($kirby) { |
96 | 79 | 'method' => 'GET', |
97 | 80 | 'auth' => false, |
98 | 81 | 'action' => Api::createHandler( |
99 | | - $validateOptionalBearerToken, |
| 82 | + Middlewares::hasBearerTokenWithoutRedirect(...), |
100 | 83 | function (array $context, array $args) use ($kirby) { |
101 | 84 | $data = $kirby->cache('pages')->getOrSet( |
102 | 85 | 'sitemap.headless.json', |
@@ -173,7 +156,7 @@ function () use ($kirby) { |
173 | 156 | 'method' => 'GET|POST', |
174 | 157 | 'auth' => false, |
175 | 158 | 'action' => Api::createHandler( |
176 | | - $validateOptionalBearerToken, |
| 159 | + Middlewares::hasBearerTokenWithoutRedirect(...), |
177 | 160 | function (array $context, array $args) use ($kirby) { |
178 | 161 | $templateName = $args[0] ?? null; |
179 | 162 |
|
|
0 commit comments