16314: Fix syntax.
[arvados-workbench2.git] / src / common / config.ts
index f9fb9f6a0727d708a4cbd641d40d05563630dd97..dd812c65bb488cce168fa6a178b4529a0cc58206 100644 (file)
@@ -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<WorkbenchConfig>(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<ClusterConfigJSON>(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<ClusterConfigJSON>): 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: "",