From ebc69a8f2c3eba0a7fe5c0cec55032b73342e2ad Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 4 May 2022 20:08:22 +0100 Subject: [PATCH] Fixed double path slash URL issue in some cases - Occurred on system request path usage (Primarily on guest login redirection) when a custom path was not in use. - Added test to cover. For #3404 --- app/Http/Request.php | 3 ++- tests/UrlTest.php | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/Http/Request.php b/app/Http/Request.php index 13892603d..fa368f3bc 100644 --- a/app/Http/Request.php +++ b/app/Http/Request.php @@ -35,7 +35,8 @@ class Request extends LaravelRequest $appUrl = config('app.url', null); if ($appUrl) { - return '/' . rtrim(implode('/', array_slice(explode('/', $appUrl), 3)), '/'); + $parsedBaseUrl = rtrim(implode('/', array_slice(explode('/', $appUrl), 3)), '/'); + return empty($parsedBaseUrl) ? '' : ('/' . $parsedBaseUrl); } return parent::getBaseUrl(); diff --git a/tests/UrlTest.php b/tests/UrlTest.php index 90215d558..2313e02f4 100644 --- a/tests/UrlTest.php +++ b/tests/UrlTest.php @@ -34,4 +34,19 @@ class UrlTest extends TestCase $this->assertEquals('/cool/docs', $bsRequest->getBaseUrl()); $this->assertEquals('https://donkey.example.com:8091/cool/docs/login', $bsRequest->getUri()); } + + public function test_app_url_without_path_does_not_duplicate_path_slash() + { + config()->set('app.url', 'https://donkey.example.com'); + + // Have to manually get and wrap request in our custom type due to testing mechanics + $this->get('/settings'); + $bsRequest = Request::createFrom(request()); + + $this->assertEquals('https://donkey.example.com', $bsRequest->getSchemeAndHttpHost()); + $this->assertEquals('', $bsRequest->getBaseUrl()); + $this->assertEquals('/settings', $bsRequest->getPathInfo()); + $this->assertEquals('https://donkey.example.com/settings', $bsRequest->getUri()); + } + }