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)