From 19b709343845891a23f07e26a12586e7444ac434 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 4 Nov 2018 15:18:27 +0000 Subject: [PATCH] Fixed redirect issue when custom app url in use Fixes #956 & #1048 Also added tests to cover this url logic. Also removed debugbar during tests to maybe improve test speed. --- app/helpers.php | 7 ++++++- phpunit.xml | 1 + tests/HelpersTest.php | 19 +++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/HelpersTest.php diff --git a/app/helpers.php b/app/helpers.php index 50b41ec05..4c0521d3a 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -92,10 +92,15 @@ function baseUrl($path, $forceAppDomain = false) if ($isFullUrl && !$forceAppDomain) { return $path; } + $path = trim($path, '/'); + $trimBase = rtrim(config('app.url'), '/'); // Remove non-specified domain if forced and we have a domain if ($isFullUrl && $forceAppDomain) { + if (strpos($path, $trimBase) === 0) { + $path = trim(substr($path, strlen($trimBase) - 1)); + } $explodedPath = explode('/', $path); $path = implode('/', array_splice($explodedPath, 3)); } @@ -105,7 +110,7 @@ function baseUrl($path, $forceAppDomain = false) return url($path); } - return rtrim(config('app.url'), '/') . '/' . $path; + return $trimBase . '/' . $path; } /** diff --git a/phpunit.xml b/phpunit.xml index 4c1e4f66c..efed0070e 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -42,5 +42,6 @@ + diff --git a/tests/HelpersTest.php b/tests/HelpersTest.php new file mode 100644 index 000000000..30b0085d6 --- /dev/null +++ b/tests/HelpersTest.php @@ -0,0 +1,19 @@ +set('app.url', 'http://example.com/bookstack'); + $result = baseUrl('/'); + $this->assertEquals('http://example.com/bookstack/', $result); + } + + public function test_base_url_takes_extra_path_into_account_on_forced_domain() + { + config()->set('app.url', 'http://example.com/bookstack'); + $result = baseUrl('http://example.com/bookstack/', true); + $this->assertEquals('http://example.com/bookstack/', $result); + } +} \ No newline at end of file