bb115fba971b208d6d8d23e1f9e6536760c0732e
[arvados.git] / services / workbench2 / src / views-components / multiselect-toolbar / ms-user-action-set.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { ActiveIcon, AdminMenuIcon, AdvancedIcon, AttributesIcon, DeactivateUserIcon, LoginAsIcon } from 'components/icon/icon';
6 import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames } from './ms-menu-actions';
7 import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
8 import { openActivateDialog, openDeactivateDialog, openSetupDialog } from 'store/user-profile/user-profile-actions';
9 import { openUserAttributes } from 'store/users/users-actions';
10 import { loginAs } from 'store/users/users-actions';
11
12 const { ATTRIBUTES, API_DETAILS, SETUP_USER, ACTIVATE_USER, DEACTIVATE_USER, LOGIN_AS_USER } = MultiSelectMenuActionNames;
13
14 export const USER_ATTRIBUTES_DIALOG = 'userAttributesDialog';
15
16 const msUserAttributes: MultiSelectMenuAction = {
17     name: ATTRIBUTES,
18     icon: AttributesIcon,
19     hasAlts: false,
20     isForMulti: false,
21     execute: (dispatch, resources) => {
22         dispatch<any>(openUserAttributes(resources[0].uuid));
23     },
24 };
25
26 const msAdvancedAction: MultiSelectMenuAction = {
27     name: API_DETAILS,
28     icon: AdvancedIcon,
29     hasAlts: false,
30     isForMulti: false,
31     execute: (dispatch, resources) => {
32         dispatch<any>(openAdvancedTabDialog(resources[0].uuid));
33     },
34 };
35
36 const msActivateUser: MultiSelectMenuAction = {
37     name: ACTIVATE_USER,
38     icon: ActiveIcon,
39     hasAlts: false,
40     isForMulti: false,
41     execute: (dispatch, resources) => {
42         dispatch<any>(openActivateDialog(resources[0].uuid));
43     },
44 };
45
46 const msSetupUser: MultiSelectMenuAction = {
47     name: SETUP_USER,
48     icon: AdminMenuIcon,
49     hasAlts: false,
50     isForMulti: false,
51     execute: (dispatch, resources) => {
52         dispatch<any>(openSetupDialog(resources[0].uuid));
53     },
54 };
55
56 const msDeactivateUser: MultiSelectMenuAction = {
57     name: DEACTIVATE_USER,
58     icon: DeactivateUserIcon,
59     hasAlts: false,
60     isForMulti: false,
61     execute: (dispatch, resources) => {
62         dispatch<any>(openDeactivateDialog(resources[0].uuid));
63     },
64 };
65
66 const msLoginAsUser: MultiSelectMenuAction = {
67     name: LOGIN_AS_USER,
68     icon: LoginAsIcon,
69     hasAlts: false,
70     isForMulti: false,
71     execute: (dispatch, resources) => {
72         dispatch<any>(loginAs(resources[0].uuid));
73     },
74 };
75
76 export const msUserActionSet: MultiSelectMenuActionSet = [[msAdvancedAction, msUserAttributes, msSetupUser, msActivateUser, msDeactivateUser, msLoginAsUser]];
77
78 export const msUserCommonActionFilter = new Set([ATTRIBUTES, API_DETAILS]);
79 export const msUserAdminActionFilter = new Set([ATTRIBUTES, API_DETAILS, SETUP_USER, ACTIVATE_USER, DEACTIVATE_USER, LOGIN_AS_USER]);