X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/9525ed95bef2a8de63b48a0682c342465d29bae9..b05f087c3e2bbaaa829d602af6d90fa565a9900e:/src/common/redirect-to.ts?ds=sidebyside diff --git a/src/common/redirect-to.ts b/src/common/redirect-to.ts index 86fac71c..77be742f 100644 --- a/src/common/redirect-to.ts +++ b/src/common/redirect-to.ts @@ -7,23 +7,29 @@ import { Config } from './config'; const REDIRECT_TO_KEY = 'redirectTo'; export const storeRedirects = () => { - if (window.location.href.indexOf(REDIRECT_TO_KEY) > -1) { - const { location: { href }, sessionStorage } = window; - const redirectUrl = href.split(`${REDIRECT_TO_KEY}=`)[1]; - - if (sessionStorage) { - sessionStorage.setItem(REDIRECT_TO_KEY, redirectUrl); - } + let redirectUrl; + const { location: { href }, localStorage } = window; + + if (href.indexOf(REDIRECT_TO_KEY) > -1) { + redirectUrl = href.split(`${REDIRECT_TO_KEY}=`)[1]; + } + + if (localStorage && redirectUrl) { + localStorage.setItem(REDIRECT_TO_KEY, redirectUrl); } }; -export const handleRedirects = (config: Config) => { - const { sessionStorage } = window; +export const handleRedirects = (token: string, config: Config) => { + const { localStorage } = window; const { keepWebServiceUrl } = config; - if (sessionStorage && sessionStorage.getItem(REDIRECT_TO_KEY)) { - const redirectUrl = sessionStorage.getItem(REDIRECT_TO_KEY); - sessionStorage.removeItem(REDIRECT_TO_KEY); - window.location.href = `${keepWebServiceUrl}${redirectUrl}`; + if (localStorage && localStorage.getItem(REDIRECT_TO_KEY)) { + const redirectUrl = localStorage.getItem(REDIRECT_TO_KEY); + localStorage.removeItem(REDIRECT_TO_KEY); + + if (redirectUrl) { + const sep = redirectUrl.indexOf("?") > -1 ? "&" : "?"; + window.location.href = `${keepWebServiceUrl}${redirectUrl}${sep}api_token=${token}`; + } } -}; \ No newline at end of file +};