From 6123741765e81d0bea8fbd5dbb0f310aaca0fb33 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Mon, 15 Jun 2020 09:43:10 -0300 Subject: [PATCH] fix: OIDC Redirect erases query parameters (#1773) * fix: OIDC Redirect erases query parameters * prevent issues Co-authored-by: James Petts --- platform/viewer/src/OHIFStandaloneViewer.js | 28 +++++++++++++++------ platform/viewer/src/routes/CallbackPage.js | 6 +++-- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/platform/viewer/src/OHIFStandaloneViewer.js b/platform/viewer/src/OHIFStandaloneViewer.js index fd5d875e5..7bddfb9d6 100644 --- a/platform/viewer/src/OHIFStandaloneViewer.js +++ b/platform/viewer/src/OHIFStandaloneViewer.js @@ -52,10 +52,13 @@ class OHIFStandaloneViewer extends Component { const { appConfig = {} } = this.context; const userNotLoggedIn = userManager && (!user || user.expired); if (userNotLoggedIn) { - const pathname = this.props.location.pathname; + const { pathname, search } = this.props.location; if (pathname !== '/callback') { - sessionStorage.setItem('ohif-redirect-to', pathname); + sessionStorage.setItem( + 'ohif-redirect-to', + JSON.stringify({ pathname, search }) + ); } return ( @@ -103,12 +106,21 @@ class OHIFStandaloneViewer extends Component { userManager.removeUser().then(() => { if (targetLinkUri !== null) { + const ohifRedirectTo = { + pathname: new URL(targetLinkUri).pathname, + }; sessionStorage.setItem( 'ohif-redirect-to', - new URL(targetLinkUri).pathname + JSON.stringify(ohifRedirectTo) ); } else { - sessionStorage.setItem('ohif-redirect-to', '/'); + const ohifRedirectTo = { + pathname: '/', + }; + sessionStorage.setItem( + 'ohif-redirect-to', + JSON.stringify(ohifRedirectTo) + ); } if (loginHint !== null) { @@ -191,10 +203,10 @@ class OHIFStandaloneViewer extends Component { {match === null ? ( <> ) : ( - - - - )} + + + + )} )} diff --git a/platform/viewer/src/routes/CallbackPage.js b/platform/viewer/src/routes/CallbackPage.js index a6ba05883..f53f1dc13 100644 --- a/platform/viewer/src/routes/CallbackPage.js +++ b/platform/viewer/src/routes/CallbackPage.js @@ -14,9 +14,11 @@ class CallbackPage extends Component { { - const pathname = sessionStorage.getItem('ohif-redirect-to'); + const { pathname, search = '' } = JSON.parse( + sessionStorage.getItem('ohif-redirect-to') + ); - this.props.history.push(pathname); + this.props.history.push({ pathname, search }); }} errorCallback={error => { //this.props.history.push("/");