X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/cda10815df30e3bceec728535f426754ef8ff2e8..02fe86a56f080ed1d5770ad6c6856a15f50ab508:/src/views-components/main-app-bar/account-menu.tsx diff --git a/src/views-components/main-app-bar/account-menu.tsx b/src/views-components/main-app-bar/account-menu.tsx index 44b113df..72218053 100644 --- a/src/views-components/main-app-bar/account-menu.tsx +++ b/src/views-components/main-app-bar/account-menu.tsx @@ -3,7 +3,8 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from "react"; -import { MenuItem } from "@material-ui/core"; +import { MenuItem, Divider } from "@material-ui/core"; +import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles'; import { User, getUserFullname } from "~/models/user"; import { DropdownMenu } from "~/components/dropdown-menu/dropdown-menu"; import { UserPanelIcon } from "~/components/icon/icon"; @@ -12,40 +13,75 @@ import { logout } from '~/store/auth/auth-action'; import { RootState } from "~/store/store"; import { openCurrentTokenDialog } from '~/store/current-token-dialog/current-token-dialog-actions'; import { openRepositoriesPanel } from "~/store/repositories/repositories-actions"; -import { - navigateToSshKeys, navigateToKeepServices, navigateToComputeNodes, - navigateToApiClientAuthorizations, navigateToMyAccount +import { + navigateToSiteManager, + navigateToSshKeysUser, + navigateToMyAccount, + navigateToLinkAccount } from '~/store/navigation/navigation-action'; -import { openVirtualMachines } from "~/store/virtual-machines/virtual-machines-actions"; -import { navigateToUsers } from '~/store/navigation/navigation-action'; +import { openUserVirtualMachines } from "~/store/virtual-machines/virtual-machines-actions"; interface AccountMenuProps { user?: User; + currentRoute: string; + workbenchURL: string; + apiToken?: string; + localCluster: string; } const mapStateToProps = (state: RootState): AccountMenuProps => ({ - user: state.auth.user + user: state.auth.user, + currentRoute: state.router.location ? state.router.location.pathname : '', + workbenchURL: state.config.workbenchUrl, + apiToken: state.auth.apiToken, + localCluster: state.auth.localCluster }); -export const AccountMenu = connect(mapStateToProps)( - ({ user, dispatch }: AccountMenuProps & DispatchProp) => - user - ? } - id="account-menu" - title="Account Management"> - - {getUserFullname(user)} - - dispatch(openVirtualMachines())}>Virtual Machines - dispatch(openRepositoriesPanel())}>Repositories - dispatch(openCurrentTokenDialog)}>Current token - dispatch(navigateToSshKeys)}>Ssh Keys - dispatch(navigateToUsers)}>Users - { user.isAdmin && dispatch(navigateToApiClientAuthorizations)}>Api Tokens } - { user.isAdmin && dispatch(navigateToKeepServices)}>Keep Services } - { user.isAdmin && dispatch(navigateToComputeNodes)}>Compute Nodes } - dispatch(navigateToMyAccount)}>My account - dispatch(logout())}>Logout - - : null); +const wb1URL = (route: string) => { + const r = route.replace(/^\//, ""); + if (r.match(/^(projects|collections)\//)) { + return r; + } else if (r.match(/^processes\//)) { + return r.replace(/^processes/, "container_requests"); + } + return ""; +}; + +type CssRules = 'link'; + +const styles: StyleRulesCallback = () => ({ + link: { + textDecoration: 'none', + color: 'inherit' + } +}); + +export const AccountMenu = withStyles(styles)( + connect(mapStateToProps)( + ({ user, dispatch, currentRoute, workbenchURL, apiToken, localCluster, classes }: AccountMenuProps & DispatchProp & WithStyles) => + user + ? } + id="account-menu" + title="Account Management" + key={currentRoute}> + + {getUserFullname(user)} {user.uuid.substr(0, 5) !== localCluster && `(${user.uuid.substr(0, 5)})`} + + {user.isActive ? <> + dispatch(openUserVirtualMachines())}>Virtual Machines + {!user.isAdmin && dispatch(openRepositoriesPanel())}>Repositories} + dispatch(openCurrentTokenDialog)}>Current token + dispatch(navigateToSshKeysUser)}>Ssh Keys + dispatch(navigateToSiteManager)}>Site Manager + dispatch(navigateToMyAccount)}>My account + dispatch(navigateToLinkAccount)}>Link account + : null} + + + Switch to Workbench v1 + + dispatch(logout(true))}>Logout + + : null));