Links: Fix opening links from different orgs on the same tab (#55837) (#55869)

* Skip intercepting links of different orgs

* Check if orgId is present on query params

* Use locationSearchToObject instead of parseKeyValue

* Revert locationSearchToObject to parseKeyValue

(cherry picked from commit 2a12644778)

Co-authored-by: Guilherme Caulada <guilherme.caulada@grafana.com>
This commit is contained in:
Grot (@grafanabot) 2022-09-27 16:46:49 -04:00 committed by GitHub
parent 39c4ba5e67
commit d86fc082fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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) {