]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Fix legacy redirection when Shaarli instance is under a subfolder
authorArthurHoaro <arthur@hoa.ro>
Tue, 1 Sep 2020 08:40:18 +0000 (10:40 +0200)
committerArthurHoaro <arthur@hoa.ro>
Tue, 1 Sep 2020 08:40:18 +0000 (10:40 +0200)
application/legacy/LegacyController.php
tests/legacy/LegacyControllerTest.php

index efc144095afc13241f048312213dedf39e3d104f..75fa9d2cfb962cf1009bea63da16ed0d41a74c93 100644 (file)
@@ -40,30 +40,33 @@ class LegacyController extends ShaarliVisitorController
     public function post(Request $request, Response $response): Response
     {
         $parameters = count($request->getQueryParams()) > 0 ? '?' . http_build_query($request->getQueryParams()) : '';
+        $route = '/admin/shaare';
 
         if (!$this->container->loginManager->isLoggedIn()) {
-            return $this->redirect($response, '/login?returnurl=/admin/shaare' . $parameters);
+            return $this->redirect($response, '/login?returnurl='. $this->getBasePath() . $route . $parameters);
         }
 
-        return $this->redirect($response, '/admin/shaare' . $parameters);
+        return $this->redirect($response, $route . $parameters);
     }
 
     /** Legacy route: ?addlink= */
     protected function addlink(Request $request, Response $response): Response
     {
+        $route = '/admin/add-shaare';
+
         if (!$this->container->loginManager->isLoggedIn()) {
-            return $this->redirect($response, '/login?returnurl=/admin/add-shaare');
+            return $this->redirect($response, '/login?returnurl=' . $this->getBasePath() . $route);
         }
 
-        return $this->redirect($response, '/admin/add-shaare');
+        return $this->redirect($response, $route);
     }
 
     /** Legacy route: ?do=login */
     protected function login(Request $request, Response $response): Response
     {
-        $returnurl = $request->getQueryParam('returnurl');
+        $returnUrl = $request->getQueryParam('returnurl');
 
-        return $this->redirect($response, '/login' . ($returnurl ? '?returnurl=' . $returnurl : ''));
+        return $this->redirect($response, '/login' . ($returnUrl ? '?returnurl=' . $returnUrl : ''));
     }
 
     /** Legacy route: ?do=logout */
index 460fbb3baccc10023ab82d6ea0a96fbc098d8bc6..2bbbb1d761cbc36cb2741c083ef184948d098e22 100644 (file)
@@ -66,11 +66,11 @@ class LegacyControllerTest extends TestCase
     {
         return [
             ['post', [], '/admin/shaare', true],
-            ['post', [], '/login?returnurl=/admin/shaare', false],
+            ['post', [], '/login?returnurl=/subfolder/admin/shaare', false],
             ['post', ['title' => 'test'], '/admin/shaare?title=test', true],
-            ['post', ['title' => 'test'], '/login?returnurl=/admin/shaare?title=test', false],
+            ['post', ['title' => 'test'], '/login?returnurl=/subfolder/admin/shaare?title=test', false],
             ['addlink', [], '/admin/add-shaare', true],
-            ['addlink', [], '/login?returnurl=/admin/add-shaare', false],
+            ['addlink', [], '/login?returnurl=/subfolder/admin/add-shaare', false],
             ['login', [], '/login', true],
             ['login', [], '/login', false],
             ['logout', [], '/admin/logout', true],