export interface FedLoginProps {
user?: User;
apiToken?: string;
- homeCluster: string;
+ localCluster: string;
remoteHostsConfig: { [key: string]: Config };
}
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>;
}
});