X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/08f915990ffe4588c076efce4d01e0b3bed2b398..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 18426a0d16..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,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set"; +import { ContextMenuActionSet } from 'views-components/context-menu/context-menu-action-set'; import { AdvancedIcon, ProjectIcon, @@ -11,58 +11,85 @@ import { UserPanelIcon, LoginAsIcon, AdminMenuIcon, -} from "components/icon/icon"; + 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 } from "store/user-profile/user-profile-actions"; -import { navigateToUserProfile } from "store/navigation/navigation-action"; - -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: "Account Settings", - adminOnly: true, - icon: UserPanelIcon, - execute: (dispatch, { uuid }) => { - dispatch(navigateToUserProfile(uuid)); - } -}, { - name: "Setup User", - adminOnly: true, - icon: AdminMenuIcon, - execute: (dispatch, { uuid }) => { - dispatch(openSetupDialog(uuid)); - } -}, { - name: "Deactivate User", - adminOnly: true, - icon: DeactivateUserIcon, - execute: (dispatch, { uuid }) => { - dispatch(openDeactivateDialog(uuid)); - } -}, { - name: "Login As User", - adminOnly: true, - icon: LoginAsIcon, - execute: (dispatch, { uuid }) => { - dispatch(loginAs(uuid)); - } -}, +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, 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], + }, + ], +];