From f31c83cc2c84521097d5f056c4d933754ef0be48 Mon Sep 17 00:00:00 2001 From: Jay Hodgson Date: Thu, 3 Oct 2024 12:56:41 -0700 Subject: [PATCH] craft the right one sage URL and set the redirect cookie --- .../web/client/GWTWrapperImpl.java | 34 +++++++++++++++---- .../client/GlobalApplicationStateImpl.java | 4 +++ .../web/client/cookie/CookieKeys.java | 3 ++ 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/sagebionetworks/web/client/GWTWrapperImpl.java b/src/main/java/org/sagebionetworks/web/client/GWTWrapperImpl.java index a1b616815a..e05b19e540 100644 --- a/src/main/java/org/sagebionetworks/web/client/GWTWrapperImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/GWTWrapperImpl.java @@ -20,6 +20,8 @@ import com.google.gwt.user.datepicker.client.CalendarUtil; import com.google.gwt.xhr.client.XMLHttpRequest; import java.util.Date; +import java.util.HashMap; +import java.util.Map; import org.sagebionetworks.web.client.utils.Callback; public class GWTWrapperImpl implements GWTWrapper { @@ -241,14 +243,34 @@ public String getFriendlySize(double size, boolean abbreviatedUnits) { return DisplayUtils.getFriendlySize(size, abbreviatedUnits); } + private static Map hostName2OneSageSite = new HashMap<>(); + + static { + hostName2OneSageSite.put( + "staging.synapse.org", + "https://staging.accounts.synapse.org/?appId=staging.synapse.org" + ); + hostName2OneSageSite.put( + "portal-dev.dev.sagebase.org", + "https://accounts-dev.dev.sagebase.org/?appId=dev.synapse.org" + ); + hostName2OneSageSite.put( + "localhost", + "http://localhost:3000/?appId=localhost" + ); + hostName2OneSageSite.put( + "127.0.0.1", + "http://127.0.0.1:3000/?appId=localhost" + ); + } + @Override public String getOneSageURL() { - boolean isStaging = Window.Location - .getHostName() - .equalsIgnoreCase("staging.synapse.org"); - return isStaging - ? "https://staging.accounts.synapse.org/?appId=staging.synapse.org" - : "https://accounts.synapse.org/?appId=synapse.org"; + String hostName = Window.Location.getHostName().toLowerCase(); + return hostName2OneSageSite.getOrDefault( + hostName, + "https://accounts.synapse.org/?appId=synapse.org" + ); } @Override diff --git a/src/main/java/org/sagebionetworks/web/client/GlobalApplicationStateImpl.java b/src/main/java/org/sagebionetworks/web/client/GlobalApplicationStateImpl.java index c22bc6df3d..916a264938 100644 --- a/src/main/java/org/sagebionetworks/web/client/GlobalApplicationStateImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/GlobalApplicationStateImpl.java @@ -1,6 +1,7 @@ package org.sagebionetworks.web.client; import static org.sagebionetworks.web.client.ServiceEntryPointUtils.fixServiceEntryPoint; +import static org.sagebionetworks.web.client.cookie.CookieKeys.ONESAGE_REDIRECT_COOKIE_KEY; import static org.sagebionetworks.web.client.cookie.CookieKeys.SHOW_DATETIME_IN_UTC; import static org.sagebionetworks.web.shared.WebConstants.REPO_SERVICE_URL_KEY; @@ -614,6 +615,9 @@ public void onPreviewNativeEvent(NativePreviewEvent event) { @Override public void gotoLoginPage() { + //tell One Sage to return to the current url + cookieProvider.setCookie(ONESAGE_REDIRECT_COOKIE_KEY, gwt.getCurrentURL()); + //go to One Sage to log in gwt.assignThisWindowWith(gwt.getOneSageURL()); } diff --git a/src/main/java/org/sagebionetworks/web/client/cookie/CookieKeys.java b/src/main/java/org/sagebionetworks/web/client/cookie/CookieKeys.java index 58b4d55f5d..9d7027bc43 100644 --- a/src/main/java/org/sagebionetworks/web/client/cookie/CookieKeys.java +++ b/src/main/java/org/sagebionetworks/web/client/cookie/CookieKeys.java @@ -27,4 +27,7 @@ public class CookieKeys { public static String PORTAL_CONFIG = "org.sagebionetworks.security.cookies.portal.config"; + + public static String ONESAGE_REDIRECT_COOKIE_KEY = + "org.sagebionetworks.cookies.redirect-after-login"; }