]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Workaround for hoster (ionos)
authorChristoph Stoettner <christoph.stoettner@stoeps.de>
Tue, 29 Sep 2020 10:15:04 +0000 (12:15 +0200)
committerChristoph Stoettner <christoph.stoettner@stoeps.de>
Tue, 29 Sep 2020 10:15:04 +0000 (12:15 +0200)
The hoster writes the environment variable with bearer token to
REDIRECT_HTTP_AUTHORIZATION and needs to provide RewriteBase / to
.htaccess

.htaccess
application/api/ApiMiddleware.php

index af2dc5a7ff24a244d731a5d2382dc496f62d1eda..25fcfb034ee3e1bf1149eafdfccc5b9d27803fe2 100644 (file)
--- a/.htaccess
+++ b/.htaccess
@@ -10,8 +10,12 @@ RewriteRule ^(.git|doxygen|vendor) - [F]
 # fixes JWT token not correctly forwarded on some Apache/FastCGI setups
 RewriteCond %{HTTP:Authorization} ^(.*)
 RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
+# Alternative (if the 2 lines above don't work)
+# SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
 
 # REST API
+# Ionos Hosting needs RewriteBase /
+# RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^ index.php [QSA,L]
index 09ce6445303bf5f9280e033c6004bf5e56f725c9..da730e0c48e739fbb382e86f86dbb15f4e9287e8 100644 (file)
@@ -107,7 +107,7 @@ class ApiMiddleware
      */
     protected function checkToken($request)
     {
-        if (! $request->hasHeader('Authorization')) {
+        if (! $request->hasHeader('Authorization') && !isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
             throw new ApiAuthorizationException('JWT token not provided');
         }
 
@@ -115,7 +115,11 @@ class ApiMiddleware
             throw new ApiAuthorizationException('Token secret must be set in Shaarli\'s administration');
         }
 
-        $authorization = $request->getHeaderLine('Authorization');
+       if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
+           $authorization = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
+       } else {
+            $authorization = $request->getHeaderLine('Authorization');
+       }
 
         if (! preg_match('/^Bearer (.*)/i', $authorization, $matches)) {
             throw new ApiAuthorizationException('Invalid JWT header');