Subpath: On stripBaseFromUrl, check if the segmentToStrip is followed by a '/' otherwise dont replace it (#75559)

This commit is contained in:
Joao Silva 2023-09-28 10:23:53 +01:00 committed by GitHub
parent 96cbe70b14
commit 8eadc94d3e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 1 deletions

View File

@ -50,6 +50,10 @@ describe('locationUtil', () => {
const urlWithoutMaster = locationUtil.stripBaseFromUrl('/thisShouldRemain/subUrl/');
expect(urlWithoutMaster).toBe('/thisShouldRemain/subUrl/');
});
test('relative url with similar suburl', () => {
const urlWithoutMaster = locationUtil.stripBaseFromUrl('/subUrl-backup/thisShouldRemain/');
expect(urlWithoutMaster).toBe('/subUrl-backup/thisShouldRemain/');
});
test('absolute url', () => {
const urlWithoutMaster = locationUtil.stripBaseFromUrl('http://www.domain.com:9877/subUrl/thisShouldRemain/');
expect(urlWithoutMaster).toBe('/thisShouldRemain/');
@ -64,6 +68,12 @@ describe('locationUtil', () => {
const urlWithoutMaster = locationUtil.stripBaseFromUrl('http://www.domain.com:9877/thisShouldRemain/subUrl/');
expect(urlWithoutMaster).toBe('http://www.domain.com:9877/thisShouldRemain/subUrl/');
});
test('absolute url with similar suburl', () => {
const urlWithoutMaster = locationUtil.stripBaseFromUrl(
'http://www.domain.com:9877/subUrl-backup/thisShouldRemain/'
);
expect(urlWithoutMaster).toBe('http://www.domain.com:9877/subUrl-backup/thisShouldRemain/');
});
});
describe('when appSubUrl not configured', () => {

View File

@ -43,7 +43,9 @@ const stripBaseFromUrl = (urlOrPath: string): string => {
segmentToStrip = `${window.location.origin}${appSubUrl}`;
}
return urlOrPath.length > 0 && urlOrPath.indexOf(segmentToStrip) === 0
// Check if the segment is followed by a '/' so it does not replace incorrect similarly named segments
// i.e. /grafana should not replace /grafanadashboards
return urlOrPath.length > 0 && urlOrPath.indexOf(segmentToStrip + '/') === 0
? urlOrPath.slice(segmentToStrip.length - stripExtraChars)
: urlOrPath;
};