diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bc8d4048edb1f307faff1cdba32600faedbd9f26..faa4f5158d1736274471ed2ff93cb8f5312af60d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,8 +9,8 @@ variables: CONTAINER_GALAXY_URL: "${NDIP_DOCKER_REPOSITORY}/${CI_PROJECT_PATH}" CONTAINER_GALAXY_BASE_URL: "${CONTAINER_GALAXY_URL}/base" CONTAINER_GALAXY_COMMIT_URL: "${CONTAINER_GALAXY_URL}/commit" - GALAXY_VERSION_PYTHON: 24.2.dev4+ornl - GALAXY_VERSION_DOCKER: 24.2.dev4.ornl + GALAXY_VERSION_PYTHON: 24.2.dev7+ornl + GALAXY_VERSION_DOCKER: 24.2.dev7.ornl # This import is for the func_rse_docker_* functions before_script: diff --git a/client/src/components/Masthead/Masthead.vue b/client/src/components/Masthead/Masthead.vue index 32a0814bb2d42a1ef7926a9b17d4514e0ae96cef..1f958482b9631b6f64ef71f3be55c56a9fddcc04 100644 --- a/client/src/components/Masthead/Masthead.vue +++ b/client/src/components/Masthead/Masthead.vue @@ -3,7 +3,7 @@ import { BNavbar, BNavbarBrand, BNavbarNav } from "bootstrap-vue"; import { storeToRefs } from "pinia"; import { userLogout } from "utils/logout"; import { withPrefix } from "utils/redirect"; -import { onMounted, ref } from "vue"; +import { computed, onMounted, ref } from "vue"; import { useRouter } from "vue-router/composables"; import { useConfig } from "@/composables/config"; @@ -45,6 +45,14 @@ const props = defineProps({ const extensionTabs = ref([]); const windowToggle = ref(false); +const novaUrl = computed(() => { + if (isConfigLoaded.value) { + return config.value.dashboard_url; + } + + return ""; +}); + function openUrl(url, target = null) { if (!target) { router.push(url); @@ -94,6 +102,12 @@ onMounted(() => { +
  • + + NOVA Square Logo + NOVA Dashboard + +
  • \n' + f'
    \n' ) for _section_key, section_item_type, section_item in item.panel_items_iter(): if section_item_type == panel_item_types.TOOL: diff --git a/lib/galaxy/webapps/galaxy/controllers/authnz.py b/lib/galaxy/webapps/galaxy/controllers/authnz.py index 32a7ce5813a93c8e8ea3f543073cff4d108da762..a0c0274729846b2bb9c77a92e02d683e9d2b346a 100644 --- a/lib/galaxy/webapps/galaxy/controllers/authnz.py +++ b/lib/galaxy/webapps/galaxy/controllers/authnz.py @@ -77,7 +77,7 @@ class OIDC(JSAppLauncher): @web.json @web.expose - def login(self, trans, provider, idphint=None, next=None): + def login(self, trans, provider, idphint=None, next=None, external_redirect=None): if not trans.app.config.enable_oidc: msg = "Login to Galaxy using third-party identities is not enabled on this Galaxy instance." log.debug(msg) @@ -91,6 +91,10 @@ class OIDC(JSAppLauncher): trans.set_cookie(value="/", name=LOGIN_NEXT_COOKIE_NAME) success, message, redirect_uri = trans.app.authnz_manager.authenticate(provider, trans, idphint) if success: + if external_redirect: + trans.set_cookie(value=external_redirect, name=trans.app.config.external_login_redirect_cookie) + return trans.response.send_redirect(url_for(redirect_uri)) + return {"redirect_uri": redirect_uri} else: raise exceptions.AuthenticationFailed(message) @@ -149,6 +153,11 @@ class OIDC(JSAppLauncher): trans.set_cookie(value=provider, name=PROVIDER_COOKIE_NAME) # Clear the login next cookie back to default. trans.set_cookie(value="/", name=LOGIN_NEXT_COOKIE_NAME) + + external_login = trans.get_cookie(trans.app.config.external_login_redirect_cookie) + if external_login and (external_login.find("https://") == 0 or external_login.find("http://") == 0): + trans.set_cookie(value="", name=trans.app.config.external_login_redirect_cookie) + return trans.response.send_redirect(url_for(external_login)) return trans.response.send_redirect(url_for(redirect_url)) @web.expose diff --git a/static/nova_square.png b/static/nova_square.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe5b331843558d3ed8762b928db337b67b39ecb Binary files /dev/null and b/static/nova_square.png differ