import * as React from 'react';
import { connect } from 'react-redux';
import { RootState } from '~/store/store';
-import { AuthState } from '~/store/auth/auth-reducer';
import { User } from "~/models/user";
import { getSaltedToken } from '~/store/auth/auth-action-session';
import { Config } from '~/common/config';
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 !== localCluster &&
- <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;
+ }
+ const fedtoken = (remoteHostsConfig[k].loginCluster === localCluster)
+ ? apiToken : getSaltedToken(k, apiToken);
+ return <iframe key={k} src={`${remoteHostsConfig[k].workbench2Url}/fedtoken?api_token=${fedtoken}`} style={{
height: 0,
width: 0,
visibility: "hidden"
}}
- />)}
+ />;
+ })}
</div>;
}
});