X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/be8de5acc35c47d0b191223e5ece96fcf452ea5d..d76aa6ba31074f3d41cef48628b235aab4906ce5:/src/views/link-account-panel/link-account-panel-root.tsx
diff --git a/src/views/link-account-panel/link-account-panel-root.tsx b/src/views/link-account-panel/link-account-panel-root.tsx
index 10de75e800..490e47dc68 100644
--- a/src/views/link-account-panel/link-account-panel-root.tsx
+++ b/src/views/link-account-panel/link-account-panel-root.tsx
@@ -2,7 +2,7 @@
//
// SPDX-License-Identifier: AGPL-3.0
-import * as React from 'react';
+import React from 'react';
import {
StyleRulesCallback,
WithStyles,
@@ -14,12 +14,12 @@ import {
Select,
CircularProgress
} from '@material-ui/core';
-import { ArvadosTheme } from '~/common/custom-theme';
-import { UserResource } from "~/models/user";
-import { LinkAccountType } from "~/models/link-account";
-import { formatDate } from "~/common/formatters";
-import { LinkAccountPanelStatus, LinkAccountPanelError } from "~/store/link-account-panel/link-account-panel-reducer";
-import { Config } from '~/common/config';
+import { ArvadosTheme } from 'common/custom-theme';
+import { UserResource } from "models/user";
+import { LinkAccountType } from "models/link-account";
+import { formatDate } from "common/formatters";
+import { LinkAccountPanelStatus, LinkAccountPanelError } from "store/link-account-panel/link-account-panel-reducer";
+import { Config } from 'common/config';
type CssRules = 'root';
@@ -52,10 +52,10 @@ export interface LinkAccountPanelRootActionProps {
}
function displayUser(user: UserResource, showCreatedAt: boolean = false, showCluster: boolean = false) {
- const disp = [];
+ const disp: JSX.Element[] = [];
disp.push({user.email} ({user.username}, {user.uuid}));
if (showCluster) {
- const homeCluster = user.uuid.substr(0, 5);
+ const homeCluster = user.uuid.substring(0, 5);
disp.push( hosted on cluster {homeCluster} and );
}
if (showCreatedAt) {
@@ -73,125 +73,136 @@ type LinkAccountPanelRootProps = LinkAccountPanelRootDataProps & LinkAccountPane
export const LinkAccountPanelRoot = withStyles(styles)(
({ classes, targetUser, userToLink, status, isProcessing, error, startLinking, cancelLinking, linkAccount,
remoteHostsConfig, hasRemoteHosts, selectedCluster, setSelectedCluster, localCluster, loginCluster }: LinkAccountPanelRootProps) => {
- return
-
- {isProcessing &&
-
- Loading user info. Please wait.
-
-
-
+
+ // If a LoginFederation is configured, the self-serve account linking is not
+ // currently available.
+ if (loginCluster !== "") {
+ return
+
+
+ If you would like to link this account to another one, please contact your administrator.
- }
- {!isProcessing && status === LinkAccountPanelStatus.INITIAL && targetUser &&
- {isLocalUser(targetUser.uuid, localCluster) ?
-
-
- You are currently logged in as {displayUser(targetUser, true)}
-
-
- You can link Arvados accounts. After linking, either login will take you to the same account.
-
+
+ ;
+ }
+ return
+ { isProcessing &&
+
+ Loading user info. Please wait.
+
+
+
+
+ }
+
+ { !isProcessing && status === LinkAccountPanelStatus.INITIAL && targetUser &&
+ { isLocalUser(targetUser.uuid, localCluster)
+ ?
+
+
+ You are currently logged in as {displayUser(targetUser, true)}
-
-
-
-
-
-
-
+
+ You can link Arvados accounts. After linking, either login will take you to the same account.
+
+
+
+
+
- {hasRemoteHosts && selectedCluster &&
-
- You can also link {displayUser(targetUser, false)} with an account from a remote cluster.
-
-
- Please select the cluster that hosts the account you want to link with:
-
-
+
+
+
+
+ {hasRemoteHosts && selectedCluster &&
+
+ You can also link {displayUser(targetUser, false)} with an account from a remote cluster.
+
+
+ Please select the cluster that hosts the account you want to link with:
+
+
+
+
+
+ }
+
+ :
+
+
+ You are currently logged in as {displayUser(targetUser, true, true)}
+
+ { targetUser.isActive
+ ? (loginCluster === ""
+ ? <>
+ This a remote account. You can link a local Arvados account to this one.
+ After linking, you can access the local account's data by logging into the
+ {localCluster} cluster as user {targetUser.email}
+ from {targetUser.uuid.substring(0, 5)}.
+
-
- }
- :
-
-
-
- You are currently logged in as {displayUser(targetUser, true, true)}
-
- {targetUser.isActive ?
- (loginCluster === "" ?
- <>
- This a remote account. You can link a local Arvados account to this one.
- After linking, you can access the local account's data by logging into the
- {localCluster} cluster as user {targetUser.email}
- from {targetUser.uuid.substr(0, 5)}.
-
-
- startLinking(LinkAccountType.ADD_LOCAL_TO_REMOTE)}>
- Link an account from {localCluster} to this account
-
- >
- : Please visit cluster
- {loginCluster}
- to perform account linking.
- )
- :
- This an inactive remote account. An administrator must activate your
- account before you can proceed. After your accounts is activated,
- you can link a local Arvados account hosted by the {localCluster}
- cluster to this one.
- }
-
- }
-
}
- {!isProcessing && (status === LinkAccountPanelStatus.LINKING || status === LinkAccountPanelStatus.ERROR) && userToLink && targetUser &&
-
- {status === LinkAccountPanelStatus.LINKING &&
-
- Clicking 'Link accounts' will link {displayUser(userToLink, true, !isLocalUser(targetUser.uuid, localCluster))} to {displayUser(targetUser, true, !isLocalUser(targetUser.uuid, localCluster))}.
-
- {(isLocalUser(targetUser.uuid, localCluster)) &&
- After linking, logging in as {displayUser(userToLink)} will log you into the same account as {displayUser(targetUser)}.
- }
-
- Any object owned by {displayUser(userToLink)} will be transfered to {displayUser(targetUser)}.
-
- {!isLocalUser(targetUser.uuid, localCluster) &&
- You can access {userToLink.email} data by logging into {localCluster} with the {targetUser.email} account.
- }
+ >
+ : Please visit cluster
+ {loginCluster} to perform account linking.
+ )
+ :
+ This an inactive remote account. An administrator must activate your
+ account before you can proceed. After your accounts is activated,
+ you can link a local Arvados account hosted by the {localCluster} cluster to this one.
+ }
+
+ }
+
}
+
+ {!isProcessing && (status === LinkAccountPanelStatus.LINKING || status === LinkAccountPanelStatus.ERROR) && userToLink && targetUser &&
+
+ {status === LinkAccountPanelStatus.LINKING &&
+
+ Clicking 'Link accounts' will link {displayUser(userToLink, true, !isLocalUser(targetUser.uuid, localCluster))} to {displayUser(targetUser, true, !isLocalUser(targetUser.uuid, localCluster))}.
+
+ {(isLocalUser(targetUser.uuid, localCluster)) &&
+ After linking, logging in as {displayUser(userToLink)} will log you into the same account as {displayUser(targetUser)}.
}
- {error === LinkAccountPanelError.NON_ADMIN &&
- Cannot link admin account {displayUser(userToLink)} to non-admin account {displayUser(targetUser)}.
- }
- {error === LinkAccountPanelError.SAME_USER &&
- Cannot link {displayUser(targetUser)} to the same account.
- }
- {error === LinkAccountPanelError.INACTIVE &&
- Cannot link account {displayUser(userToLink)} to inactive account {displayUser(targetUser)}.
- }
-
-
- cancelLinking()}>
- Cancel
-
-
-
- linkAccount()}>
- Link accounts
-
-
+
+ Any object owned by {displayUser(userToLink)} will be transfered to {displayUser(targetUser)}.
+ {!isLocalUser(targetUser.uuid, localCluster) &&
+ You can access {userToLink.email} data by logging into {localCluster} with the {targetUser.email} account.
+ }
+ }
+ {error === LinkAccountPanelError.NON_ADMIN &&
+ Cannot link admin account {displayUser(userToLink)} to non-admin account {displayUser(targetUser)}.
+ }
+ {error === LinkAccountPanelError.SAME_USER &&
+ Cannot link {displayUser(targetUser)} to the same account.
+ }
+ {error === LinkAccountPanelError.INACTIVE &&
+ Cannot link account {displayUser(userToLink)} to inactive account {displayUser(targetUser)}.
}
-
- ;
+
+
+ cancelLinking()}>
+ Cancel
+
+
+
+ linkAccount()}>
+ Link accounts
+
+
+
+ }
+ ;
});