15255: Log missing workbench2Url value to console.
[arvados-workbench2.git] / src / views / workbench / fed-login.tsx
index 399b419eed26c0ef66e4cf78ec2a75cd3480bfe0..c64778a3c805f203ba97a9bde63a720cab690540 100644 (file)
@@ -13,7 +13,7 @@ import { Config } from '~/common/config';
 export interface FedLoginProps {
     user?: User;
     apiToken?: string;
-    homeCluster: string;
+    localCluster: string;
     remoteHostsConfig: { [key: string]: Config };
 }
 
@@ -21,26 +21,34 @@ const mapStateToProps = ({ auth }: RootState) => ({
     user: auth.user,
     apiToken: auth.apiToken,
     remoteHostsConfig: auth.remoteHostsConfig,
-    homeCluster: auth.homeCluster,
+    localCluster: auth.localCluster,
 });
 
 export const FedLogin = connect(mapStateToProps)(
     class extends React.Component<FedLoginProps> {
         render() {
-            const { apiToken, user, homeCluster, remoteHostsConfig } = this.props;
-            if (!apiToken || !user || !user.uuid.startsWith(homeCluster)) {
+            const { apiToken, user, localCluster, remoteHostsConfig } = this.props;
+            if (!apiToken || !user || !user.uuid.startsWith(localCluster)) {
                 return <></>;
             }
             const [, tokenUuid, token] = apiToken.split("/");
             return <div id={"fedtoken-iframe-div"}>
                 {Object.keys(remoteHostsConfig)
-                    .map((k) => k !== homeCluster &&
-                        <iframe key={k} src={`${remoteHostsConfig[k].workbench2Url}/fedtoken?api_token=${getSaltedToken(k, tokenUuid, token)}`} style={{
+                    .map((k) => {
+                        if (k === localCluster) {
+                            return;
+                        }
+                        if (!remoteHostsConfig[k].workbench2Url) {
+                            console.log(`Cluster ${k} does not define workbench2Url.  Federated login / cross-site linking to ${k} is unavailable.  Tell the admin of ${k} to set Services->Workbench2->ExternalURL in config.yml.`);
+                            return;
+                        }
+                        return <iframe key={k} src={`${remoteHostsConfig[k].workbench2Url}/fedtoken?api_token=${getSaltedToken(k, tokenUuid, token)}`} style={{
                             height: 0,
                             width: 0,
                             visibility: "hidden"
                         }}
-                        />)}
+                        />;
+                    })}
             </div>;
         }
     });