X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6e2546d78a606e19fc974b5e4443880cf6da282a..1afdf6484780b11ec66e6048ded1789b92701a0e:/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 eae219dd0a..a80d89ba14 100644 --- a/src/services/auth-service/auth-service.ts +++ b/src/services/auth-service/auth-service.ts @@ -20,6 +20,7 @@ export const USER_IS_ADMIN = 'isAdmin'; export const USER_IS_ACTIVE = 'isActive'; export const USER_USERNAME = 'username'; export const USER_PREFS = 'prefs'; +export const HOME_CLUSTER = 'homeCluster'; export interface UserDetailsResponse { email: string; @@ -42,6 +43,7 @@ export class AuthService { public saveApiToken(token: string) { localStorage.setItem(API_TOKEN_KEY, token); + localStorage.setItem(HOME_CLUSTER, token.split('/')[1].substr(0, 5)); } public removeApiToken() { @@ -52,6 +54,10 @@ export class AuthService { return localStorage.getItem(API_TOKEN_KEY) || undefined; } + public getHomeCluster() { + return localStorage.getItem(HOME_CLUSTER) || undefined; + } + public getUuid() { return localStorage.getItem(USER_UUID_KEY) || undefined; } @@ -108,9 +114,10 @@ export class AuthService { localStorage.removeItem(USER_PREFS); } - public login(uuidPrefix: string, homeCluster: string) { + public login(uuidPrefix: string, homeCluster: string, remoteHosts: { [key: string]: string }) { const currentUrl = `${window.location.protocol}//${window.location.host}/token`; - window.location.assign(`https://${homeCluster}/login?remote=${uuidPrefix}&return_to=${currentUrl}`); + const homeClusterHost = remoteHosts[homeCluster]; + window.location.assign(`https://${homeClusterHost}/login?${uuidPrefix !== homeCluster ? "remote=" + uuidPrefix + "&" : ""}return_to=${currentUrl}`); } public logout() {