diff --git a/public/app/core/navigation/patch/interceptLinkClicks.ts b/public/app/core/navigation/patch/interceptLinkClicks.ts index 377a3413ab0..95cefccc6a4 100644 --- a/public/app/core/navigation/patch/interceptLinkClicks.ts +++ b/public/app/core/navigation/patch/interceptLinkClicks.ts @@ -1,5 +1,6 @@ -import { locationUtil } from '@grafana/data'; +import { locationUtil, urlUtil } from '@grafana/data'; import { locationService, navigationLogger } from '@grafana/runtime'; +import { config } from 'app/core/config'; export function interceptLinkClicks(e: MouseEvent) { const anchor = getParentAnchor(e.target as HTMLElement); @@ -14,6 +15,8 @@ export function interceptLinkClicks(e: MouseEvent) { const target = anchor.getAttribute('target'); if (href && !target) { + const params = urlUtil.parseKeyValue(href.split('?')[1]); + const orgIdChange = params.orgId && Number(params.orgId) !== config.bootData.user.orgId; navigationLogger('utils', false, 'intercepting link click', e); e.preventDefault(); @@ -22,9 +25,9 @@ export function interceptLinkClicks(e: MouseEvent) { // Ensure old angular urls with no starting '/' are handled the same as before // Make sure external links are handled correctly // That is they where seen as being absolute from app root - if (href[0] !== '/') { + if (href[0] !== '/' || orgIdChange) { // if still contains protocol or is a mailto link, it's an absolute link to another domain or web application - if (href.indexOf('://') > 0 || href.indexOf('mailto:') === 0) { + if (href.indexOf('://') > 0 || href.indexOf('mailto:') === 0 || orgIdChange) { window.location.href = href; return; } else if (href.indexOf('#') === 0) {