diff --git a/client/galaxy/scripts/components/login/Login.vue b/client/galaxy/scripts/components/login/Login.vue index 396a97de72b..f2410c9cddf 100644 --- a/client/galaxy/scripts/components/login/Login.vue +++ b/client/galaxy/scripts/components/login/Login.vue @@ -40,11 +40,13 @@
- + + + - Sign in with + Sign in with {{ idp.charAt(0).toUpperCase() + idp.slice(1) }} @@ -78,20 +80,11 @@ export default { }, data() { const galaxy = getGalaxyInstance(); - const oidc_idps = galaxy.config.oidc; // Icons to use for each IdP const oidc_idps_icons = { google: "https://developers.google.com/identity/images/btn_google_signin_light_normal_web.png", elixir: "https://elixir-europe.org/sites/default/files/images/login-button-orange.png" }; - // Add default icons to IdPs without icons - oidc_idps - .filter(function(key) { - return oidc_idps_icons[key] === undefined; - }) - .forEach(function(idp) { - oidc_idps_icons[idp] = "fa fa-id-card"; - }); return { login: null, password: null, @@ -103,7 +96,7 @@ export default { redirect: galaxy.params.redirect, session_csrf_token: galaxy.session_csrf_token, enable_oidc: galaxy.config.enable_oidc, - oidc_idps: oidc_idps, + oidc_idps: galaxy.config.oidc, oidc_idps_icons: oidc_idps_icons }; }, diff --git a/client/galaxy/scripts/layout/menu.js b/client/galaxy/scripts/layout/menu.js index abca17e0562..b287065292c 100644 --- a/client/galaxy/scripts/layout/menu.js +++ b/client/galaxy/scripts/layout/menu.js @@ -18,7 +18,7 @@ function logoutClick() { if (galaxy.user) { galaxy.user.clearSessionStorage(); } - window.top.location.href = galaxy.root; + window.top.location.href = `${galaxy.root}login?logout=true`; }); } diff --git a/lib/galaxy/authnz/managers.py b/lib/galaxy/authnz/managers.py index 1238a4ce203..b2bcbd94953 100644 --- a/lib/galaxy/authnz/managers.py +++ b/lib/galaxy/authnz/managers.py @@ -104,6 +104,8 @@ class AuthnzManager(object): self.oidc_backends_config[idp] = self._parse_custos_config(child) self.oidc_backends_implementation[idp] = 'custos' self.app.config.oidc.append(idp) + else: + raise ParseError("Unknown provider specified") if len(self.oidc_backends_config) == 0: raise ParseError("No valid provider configuration parsed.") except ImportError: diff --git a/lib/galaxy/webapps/galaxy/controllers/root.py b/lib/galaxy/webapps/galaxy/controllers/root.py index 49fa09f4921..6140289596b 100644 --- a/lib/galaxy/webapps/galaxy/controllers/root.py +++ b/lib/galaxy/webapps/galaxy/controllers/root.py @@ -87,7 +87,8 @@ class RootController(controller.JSAppLauncher, UsesAnnotations): # there is only one oidc provider, 3) auth_conf.xml has no authenticators if (trans.app.config.enable_oidc and len(trans.app.config.oidc) == 1 and - len(trans.app.auth_manager.authenticators) == 0): + len(trans.app.auth_manager.authenticators) == 0 + and not kwd.get('logout', False)): provider = trans.app.config.oidc[0] success, message, redirect_uri = trans.app.authnz_manager.authenticate(provider, trans)