From 6d2e6d292161d566f54e94f048805569ede8e3d5 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Thu, 14 May 2020 14:31:28 -0400 Subject: [PATCH] 15881: Use user/pass login if server config uses LDAP. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- src/common/config.ts | 26 ++++++++++++++++++++++++-- src/views/login-panel/login-panel.tsx | 15 ++++++++------- tools/arvados_config.yml | 3 ++- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/common/config.ts b/src/common/config.ts index f9fb9f6a07..5c63fd699e 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -58,7 +58,18 @@ export interface ClusterConfigJSON { }; Login: { LoginCluster: string; - PAM: boolean; + Google: { + Enable: boolean; + } + LDAP: { + Enable: boolean; + } + PAM: { + Enable: boolean; + } + SSO: { + Enable: boolean; + } }; Collections: { ForwardSlashNameSubstitution: string; @@ -188,7 +199,18 @@ export const mockClusterConfigJSON = (config: Partial): Clust }, Login: { LoginCluster: "", - PAM: false, + Google: { + Enable: false, + }, + LDAP: { + Enable: false, + }, + PAM: { + Enable: false, + }, + SSO: { + Enable: false, + }, }, Collections: { ForwardSlashNameSubstitution: "", diff --git a/src/views/login-panel/login-panel.tsx b/src/views/login-panel/login-panel.tsx index 25fee7eb3c..ba0f584fbf 100644 --- a/src/views/login-panel/login-panel.tsx +++ b/src/views/login-panel/login-panel.tsx @@ -49,7 +49,7 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ } }); -const doPAMLogin = (url: string) => (username: string, password: string) => { +const doPasswordLogin = (url: string) => (username: string, password: string) => { const formData = []; formData.push('username='+encodeURIComponent(username)); formData.push('password='+encodeURIComponent(password)); @@ -66,7 +66,7 @@ type LoginPanelProps = DispatchProp & WithStyles & { localCluster: string, loginCluster: string, welcomePage: string, - pamLogin: boolean, + passwordLogin: boolean, }; export const LoginPanel = withStyles(styles)( @@ -76,9 +76,10 @@ export const LoginPanel = withStyles(styles)( localCluster: state.auth.localCluster, loginCluster: state.auth.loginCluster, welcomePage: state.auth.config.clusterConfig.Workbench.WelcomePageHTML, - pamLogin: state.auth.remoteHostsConfig[state.auth.loginCluster || state.auth.homeCluster] && - state.auth.remoteHostsConfig[state.auth.loginCluster || state.auth.homeCluster].clusterConfig.Login.PAM || false, - }))(({ classes, dispatch, remoteHosts, homeCluster, localCluster, loginCluster, welcomePage, pamLogin }: LoginPanelProps) => { + passwordLogin: state.auth.remoteHostsConfig[state.auth.loginCluster || state.auth.homeCluster] && + state.auth.remoteHostsConfig[state.auth.loginCluster || state.auth.homeCluster].clusterConfig.Login.LDAP.Enable || + state.auth.remoteHostsConfig[state.auth.loginCluster || state.auth.homeCluster].clusterConfig.Login.PAM.Enable || false, + }))(({ classes, dispatch, remoteHosts, homeCluster, localCluster, loginCluster, welcomePage, passwordLogin }: LoginPanelProps) => { const loginBtnLabel = `Log in${(localCluster !== homeCluster && loginCluster !== homeCluster) ? " to "+localCluster+" with user from "+homeCluster : ''}`; return ( } - {pamLogin + {passwordLogin ? + handleSubmit={doPasswordLogin(`https://${remoteHosts[loginCluster || homeCluster]}`)}/> :