export const getNewExtraToken = () =>
async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
const user = getState().auth.user;
+ const loginCluster = getState().auth.config.clusterConfig.Login.LoginCluster;
if (user === undefined) { return; }
+ if (loginCluster !== "" && getState().auth.homeCluster !== loginCluster) { return; }
try {
// Do not show errors on the create call, cluster security configuration may not
// allow token creation and there's no way to know that from workbench2 side in advance.
export interface TokenDialogData {
token: string;
apiHost: string;
+ canCreateNewTokens: boolean;
}
export const setTokenDialogApiHost = (apiHost: string) =>
propertiesActions.SET_PROPERTY({ key: API_HOST_PROPERTY_NAME, value: apiHost });
-export const getTokenDialogData = (state: RootState): TokenDialogData => ({
- apiHost: getProperty<string>(API_HOST_PROPERTY_NAME)(state.properties) || '',
- token: state.auth.extraApiToken || state.auth.apiToken || '',
-});
+export const getTokenDialogData = (state: RootState): TokenDialogData => {
+ const loginCluster = state.auth.config.clusterConfig.Login.LoginCluster;
+ const canCreateNewTokens = !(loginCluster !== "" && state.auth.homeCluster !== loginCluster);
+
+ return {
+ apiHost: getProperty<string>(API_HOST_PROPERTY_NAME)(state.properties) || '',
+ token: state.auth.extraApiToken || state.auth.apiToken || '',
+ canCreateNewTokens,
+ };
+};
export const openTokenDialog = dialogActions.OPEN_DIALOG({ id: TOKEN_DIALOG_NAME, data: {} });
COPY TO CLIPBOARD
</Button>
</CopyToClipboard>
- <Button
+ { this.props.canCreateNewTokens && <Button
onClick={() => this.onGetNewToken()}
color="primary"
size="small"
className={classes.actionButton}
>
GET NEW TOKEN
- </Button>
+ </Button> }
<Typography >
Arvados
<a href='http://doc.arvados.org/user/reference/api-tokens.html' target='blank' className={classes.link}>virtual machines</a>