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)}. - - - - - : 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)}. - } - - - - - - - + + 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)}. } -
-
; + + + + + + + + +
} +
; });