[v10.1.x] Subpath: On stripBaseFromUrl, check if the segmentToStrip is followed by a '/' otherwise dont replace it (#75617)

This commit is contained in:
grafana-delivery-bot[bot]
2023-09-28 10:37:35 +01:00
committed by GitHub
parent 476ee0015f
commit 2acf4e46d7
2 changed files with 13 additions and 1 deletions
@@ -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', () => {
+3 -1
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;
};