X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8753f89e9f786a12cf72374ffb1c9146b598d285..d9c4c82329d110b180003a36142e0a8e4d11ccc8:/src/views-components/context-menu/action-sets/user-action-set.ts diff --git a/src/views-components/context-menu/action-sets/user-action-set.ts b/src/views-components/context-menu/action-sets/user-action-set.ts index d2b97d1552..104402a726 100644 --- a/src/views-components/context-menu/action-sets/user-action-set.ts +++ b/src/views-components/context-menu/action-sets/user-action-set.ts @@ -2,33 +2,94 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { ContextMenuActionSet } from "~/views-components/context-menu/context-menu-action-set"; -import { AdvancedIcon, ProjectIcon, AttributesIcon, UserPanelIcon } from "~/components/icon/icon"; -import { openAdvancedTabDialog } from '~/store/advanced-tab/advanced-tab'; -import { openUserAttributes, openUserProjects, openUserManagement } from "~/store/users/users-actions"; +import { ContextMenuActionSet } from 'views-components/context-menu/context-menu-action-set'; +import { + AdvancedIcon, + ProjectIcon, + AttributesIcon, + DeactivateUserIcon, + UserPanelIcon, + LoginAsIcon, + AdminMenuIcon, + ActiveIcon, +} from 'components/icon/icon'; +import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab'; +import { loginAs, openUserAttributes, openUserProjects } from 'store/users/users-actions'; +import { openSetupDialog, openDeactivateDialog, openActivateDialog } from 'store/user-profile/user-profile-actions'; +import { navigateToUserProfile } from 'store/navigation/navigation-action'; +import { + canActivateUser, + canDeactivateUser, + canSetupUser, + isAdmin, + needsUserProfileLink, + isOtherUser, +} from 'store/context-menu/context-menu-filters'; -export const userActionSet: ContextMenuActionSet = [[{ - name: "Attributes", - icon: AttributesIcon, - execute: (dispatch, { uuid }) => { - dispatch(openUserAttributes(uuid)); - } -}, { - name: "Project", - icon: ProjectIcon, - execute: (dispatch, { uuid }) => { - dispatch(openUserProjects(uuid)); - } -}, { - name: "Advanced", - icon: AdvancedIcon, - execute: (dispatch, { uuid }) => { - dispatch(openAdvancedTabDialog(uuid)); - } -}, { - name: "Manage", - icon: UserPanelIcon, - execute: (dispatch, { uuid }) => { - dispatch(openUserManagement(uuid)); - } -}]]; +export const userActionSet: ContextMenuActionSet = [ + [ + { + name: 'Attributes', + icon: AttributesIcon, + execute: (dispatch, resources) => { + resources.forEach((resource) => dispatch(openUserAttributes(resource.uuid))); + }, + }, + { + name: 'Project', + icon: ProjectIcon, + execute: (dispatch, resources) => { + resources.forEach((resource) => dispatch(openUserProjects(resource.uuid))); + }, + }, + { + name: 'API Details', + icon: AdvancedIcon, + execute: (dispatch, resources) => { + resources.forEach((resource) => dispatch(openAdvancedTabDialog(resource.uuid))); + }, + }, + { + name: 'Account Settings', + icon: UserPanelIcon, + execute: (dispatch, resources) => { + resources.forEach((resource) => dispatch(navigateToUserProfile(resource.uuid))); + }, + filters: [needsUserProfileLink], + }, + ], + [ + { + name: 'Activate User', + icon: ActiveIcon, + execute: (dispatch, resources) => { + resources.forEach((resource) => dispatch(openActivateDialog(resource.uuid))); + }, + filters: [isAdmin, canActivateUser], + }, + { + name: 'Setup User', + icon: AdminMenuIcon, + execute: (dispatch, resources) => { + resources.forEach((resource) => dispatch(openSetupDialog(resource.uuid))); + }, + filters: [isAdmin, canSetupUser], + }, + { + name: 'Deactivate User', + icon: DeactivateUserIcon, + execute: (dispatch, resources) => { + resources.forEach((resource) => dispatch(openDeactivateDialog(resource.uuid))); + }, + filters: [isAdmin, canDeactivateUser], + }, + { + name: 'Login As User', + icon: LoginAsIcon, + execute: (dispatch, resources) => { + resources.forEach((resource) => dispatch(loginAs(resource.uuid))); + }, + filters: [isAdmin, isOtherUser], + }, + ], +];