X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d0611f387f0ec0163fc8f6053a7715bc3d592700..2a7fd99c212c33a1ec9911f8529fa5afc59a7bb2:/src/services/auth-service/auth-service.ts diff --git a/src/services/auth-service/auth-service.ts b/src/services/auth-service/auth-service.ts index 5b97596983..b530e4cd3e 100644 --- a/src/services/auth-service/auth-service.ts +++ b/src/services/auth-service/auth-service.ts @@ -64,17 +64,20 @@ export class AuthService { this.getStorage().setItem(API_TOKEN_KEY, token); const sp = token.split('/'); if (sp.length === 3) { - this.getStorage().setItem(HOME_CLUSTER, sp[1].substr(0, 5)); + this.getStorage().setItem(HOME_CLUSTER, sp[1].substring(0, 5)); } } + public setTargetUrl(url: string) { + localStorage.setItem(TARGET_URL, url); + } + public removeTargetURL() { localStorage.removeItem(TARGET_URL); - sessionStorage.removeItem(TARGET_URL); } public getTargetURL() { - return this.getStorage().getItem(TARGET_URL); + return localStorage.getItem(TARGET_URL); } public removeApiToken() { @@ -113,13 +116,17 @@ export class AuthService { const currentUrl = `${window.location.protocol}//${window.location.host}/token`; const homeClusterHost = remoteHosts[homeCluster]; const rd = new URL(window.location.href); - this.getStorage().setItem(TARGET_URL, rd.pathname + rd.search); + this.setTargetUrl(rd.pathname + rd.search); window.location.assign(`https://${homeClusterHost}/login?${(uuidPrefix !== homeCluster && homeCluster !== loginCluster) ? "remote=" + uuidPrefix + "&" : ""}return_to=${currentUrl}`); } - public logout(expireToken: string) { - const currentUrl = `${window.location.protocol}//${window.location.host}`; - window.location.assign(`${this.baseUrl || ""}/logout?api_token=${expireToken}&return_to=${currentUrl}`); + public logout(expireToken: string, preservePath: boolean) { + const fullUrl = new URL(window.location.href); + const wbBase = `${fullUrl.protocol}//${fullUrl.host}`; + const wbPath = fullUrl.pathname + fullUrl.search; + const returnTo = `${wbBase}${preservePath ? wbPath : ''}` + + window.location.assign(`${this.baseUrl || ""}/logout?api_token=${expireToken}&return_to=${returnTo}`); } public getUserDetails = (showErrors?: boolean): Promise => {