X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/50286028b596616c33e2e6919f91c7292d5a6a72..refs/heads/16314-test-user-db:/src/common/config.ts diff --git a/src/common/config.ts b/src/common/config.ts index f9fb9f6a..dd812c65 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -23,6 +23,9 @@ export interface ClusterConfigJSON { Scheme: string } }; + Mail?: { + SupportEmailAddress: string; + }; Services: { Controller: { ExternalURL: string @@ -58,7 +61,24 @@ export interface ClusterConfigJSON { }; Login: { LoginCluster: string; - PAM: boolean; + Google: { + Enable: boolean; + } + LDAP: { + Enable: boolean; + } + OpenIDConnect: { + Enable: boolean; + } + PAM: { + Enable: boolean; + } + SSO: { + Enable: boolean; + } + Test: { + Enable: boolean; + } }; Collections: { ForwardSlashNameSubstitution: string; @@ -109,6 +129,17 @@ const getApiRevision = async (apiUrl: string) => { } }; +const removeTrailingSlashes = (config: ClusterConfigJSON): ClusterConfigJSON => { + const svcs: any = {}; + Object.keys(config.Services).map((s) => { + svcs[s] = config.Services[s]; + if (svcs[s].hasOwnProperty('ExternalURL')) { + svcs[s].ExternalURL = svcs[s].ExternalURL.replace(/\/+$/, ''); + } + }); + return {...config, Services: svcs}; +}; + export const fetchConfig = () => { return Axios .get(WORKBENCH_CONFIG_URL + "?nocache=" + (new Date()).getTime()) @@ -122,7 +153,7 @@ export const fetchConfig = () => { throw new Error(`Unable to start Workbench. API_HOST is undefined in ${WORKBENCH_CONFIG_URL} or the environment.`); } return Axios.get(getClusterConfigURL(workbenchConfig.API_HOST)).then(async response => { - const clusterConfigJSON = response.data; + const clusterConfigJSON = removeTrailingSlashes(response.data); const apiRevision = await getApiRevision(clusterConfigJSON.Services.Controller.ExternalURL); const config = { ...buildConfig(clusterConfigJSON), apiRevision }; const warnLocalConfig = (varName: string) => console.warn( @@ -188,7 +219,24 @@ export const mockClusterConfigJSON = (config: Partial): Clust }, Login: { LoginCluster: "", - PAM: false, + Google: { + Enable: false, + }, + LDAP: { + Enable: false, + }, + OpenIDConnect: { + Enable: false, + }, + PAM: { + Enable: false, + }, + SSO: { + Enable: false, + }, + Test: { + Enable: false, + }, }, Collections: { ForwardSlashNameSubstitution: "",