Skip to content

Commit ebc69a8

Browse files
committed
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
1 parent 16222de commit ebc69a8

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

app/Http/Request.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ public function getBaseUrl()
3535
$appUrl = config('app.url', null);
3636

3737
if ($appUrl) {
38-
return '/' . rtrim(implode('/', array_slice(explode('/', $appUrl), 3)), '/');
38+
$parsedBaseUrl = rtrim(implode('/', array_slice(explode('/', $appUrl), 3)), '/');
39+
return empty($parsedBaseUrl) ? '' : ('/' . $parsedBaseUrl);
3940
}
4041

4142
return parent::getBaseUrl();

tests/UrlTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,19 @@ public function test_app_url_forces_overrides_on_base_request()
3434
$this->assertEquals('/cool/docs', $bsRequest->getBaseUrl());
3535
$this->assertEquals('https://donkey.example.com:8091/cool/docs/login', $bsRequest->getUri());
3636
}
37+
38+
public function test_app_url_without_path_does_not_duplicate_path_slash()
39+
{
40+
config()->set('app.url', 'https://donkey.example.com');
41+
42+
// Have to manually get and wrap request in our custom type due to testing mechanics
43+
$this->get('/settings');
44+
$bsRequest = Request::createFrom(request());
45+
46+
$this->assertEquals('https://donkey.example.com', $bsRequest->getSchemeAndHttpHost());
47+
$this->assertEquals('', $bsRequest->getBaseUrl());
48+
$this->assertEquals('/settings', $bsRequest->getPathInfo());
49+
$this->assertEquals('https://donkey.example.com/settings', $bsRequest->getUri());
50+
}
51+
3752
}

0 commit comments

Comments
 (0)