[arvados] updated: 2.7.0-5841-gec49163805

git repository hosting git at public.arvados.org
Thu Jan 25 15:51:19 UTC 2024


Summary of changes:
 .../multiselect-toolbar/MultiselectToolbar.tsx     |   2 +-
 .../ms-toolbar-action-filters.ts                   |   9 +-
 .../workbench2/src/store/users/users-actions.ts    |  10 --
 .../views-components/data-explorer/renderers.tsx   |  13 ++-
 .../multiselect-toolbar/ms-menu-actions.ts         |   4 +
 .../multiselect-toolbar/ms-user-action-set.ts      | 102 +++++++++++++--------
 6 files changed, 86 insertions(+), 54 deletions(-)

       via  ec491638051a00f89f613caecd7ed571ac7a2bfd (commit)
      from  d4c73aa98677d4fb0c70e444a56c16235cdad597 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit ec491638051a00f89f613caecd7ed571ac7a2bfd
Author: Lisa Knox <lisaknox83 at gmail.com>
Date:   Thu Jan 25 10:48:42 2024 -0500

    21224: user card admin menu up Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox at curii.com>

diff --git a/services/workbench2/src/components/multiselect-toolbar/MultiselectToolbar.tsx b/services/workbench2/src/components/multiselect-toolbar/MultiselectToolbar.tsx
index 655dc3da78..d10a6ba615 100644
--- a/services/workbench2/src/components/multiselect-toolbar/MultiselectToolbar.tsx
+++ b/services/workbench2/src/components/multiselect-toolbar/MultiselectToolbar.tsx
@@ -272,7 +272,7 @@ const resourceToMsResourceKind = (uuid: string, resources: ResourcesState, user:
                 ? msMenuResourceKind.RUNNING_PROCESS_RESOURCE
                 : msMenuResourceKind.PROCESS_RESOURCE;
         case ResourceKind.USER:
-            return msMenuResourceKind.ROOT_PROJECT;
+            return isAdmin ? msMenuResourceKind.ROOT_PROJECT_ADMIN : msMenuResourceKind.ROOT_PROJECT;
         case ResourceKind.LINK:
             return msMenuResourceKind.LINK;
         case ResourceKind.WORKFLOW:
diff --git a/services/workbench2/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts b/services/workbench2/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
index b231135d3b..ecd3440288 100644
--- a/services/workbench2/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
+++ b/services/workbench2/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
@@ -16,11 +16,12 @@ import {
 import { msProcessActionSet, msCommonProcessActionFilter, msAdminProcessActionFilter, msRunningProcessActionFilter } from 'views-components/multiselect-toolbar/ms-process-action-set';
 import { msWorkflowActionSet, msWorkflowActionFilter, msReadOnlyWorkflowActionFilter } from 'views-components/multiselect-toolbar/ms-workflow-action-set';
 import { ResourceKind } from 'models/resource';
-import { msUserActionSet } from "views-components/multiselect-toolbar/ms-user-action-set";
+import { msUserActionSet, msUserCommonActionFilter, msUserAdminActionFilter } from "views-components/multiselect-toolbar/ms-user-action-set";
 
 export enum msMenuResourceKind {
     API_CLIENT_AUTHORIZATION = 'ApiClientAuthorization',
     ROOT_PROJECT = 'RootProject',
+    ROOT_PROJECT_ADMIN = 'RootProjectAdmin',
     PROJECT = 'Project',
     FILTER_GROUP = 'FilterGroup',
     READONLY_PROJECT = 'ReadOnlyProject',
@@ -83,7 +84,8 @@ const {
     FILTER_GROUP_ADMIN,
     WORKFLOW,
     READONLY_WORKFLOW,
-    ROOT_PROJECT
+    ROOT_PROJECT,
+    ROOT_PROJECT_ADMIN,
 } = msMenuResourceKind;
 
 export type TMultiselectActionsFilters = Record<string, [MultiSelectMenuActionSet, Set<string>]>;
@@ -115,5 +117,6 @@ export const multiselectActionsFilters: TMultiselectActionsFilters = {
     [WORKFLOW]: [msWorkflowActionSet, msWorkflowActionFilter],
     [READONLY_WORKFLOW]: [msWorkflowActionSet, msReadOnlyWorkflowActionFilter],
 
-    [ROOT_PROJECT]: [msUserActionSet, allActionNames(msUserActionSet)],
+    [ROOT_PROJECT]: [msUserActionSet, msUserCommonActionFilter],
+    [ROOT_PROJECT_ADMIN]: [msUserActionSet, msUserAdminActionFilter],
 };
diff --git a/services/workbench2/src/store/users/users-actions.ts b/services/workbench2/src/store/users/users-actions.ts
index 4c789dbeed..62af580251 100644
--- a/services/workbench2/src/store/users/users-actions.ts
+++ b/services/workbench2/src/store/users/users-actions.ts
@@ -136,16 +136,6 @@ export const openUserPanel = () =>
         }
     };
 
-export const toggleIsAdmin = (uuid: string) =>
-    async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-        const { resources } = getState();
-        const data = getResource<UserResource>(uuid)(resources);
-        const isAdmin = data!.isAdmin;
-        const newActivity = await services.userService.update(uuid, { isAdmin: !isAdmin });
-        dispatch<any>(loadUsersPanel());
-        return newActivity;
-    };
-
 export const loadUsersPanel = () =>
     (dispatch: Dispatch) => {
         dispatch(userBindedActions.RESET_EXPLORER_SEARCH_VALUE());
diff --git a/services/workbench2/src/views-components/data-explorer/renderers.tsx b/services/workbench2/src/views-components/data-explorer/renderers.tsx
index 56926b513d..81e2b55aa9 100644
--- a/services/workbench2/src/views-components/data-explorer/renderers.tsx
+++ b/services/workbench2/src/views-components/data-explorer/renderers.tsx
@@ -36,7 +36,6 @@ import { ResourceStatus as WorkflowStatus } from "views/workflow-panel/workflow-
 import { getUuidPrefix, openRunProcess } from "store/workflow-panel/workflow-panel-actions";
 import { openSharingDialog } from "store/sharing-dialog/sharing-dialog-actions";
 import { getUserFullname, getUserDisplayName, User, UserResource } from "models/user";
-import { toggleIsAdmin } from "store/users/users-actions";
 import { LinkClass, LinkResource } from "models/link";
 import { navigateTo, navigateToGroupDetails, navigateToUserProfile } from "store/navigation/navigation-action";
 import { withResourceData } from "views-components/data-explorer/with-resources";
@@ -53,6 +52,18 @@ import { VirtualMachinesResource } from "models/virtual-machines";
 import { CopyToClipboardSnackbar } from "components/copy-to-clipboard-snackbar/copy-to-clipboard-snackbar";
 import { ProjectResource } from "models/project";
 import { ProcessResource } from "models/process";
+import { ServiceRepository } from "services/services";
+import { loadUsersPanel } from "store/users/users-actions";
+
+export const toggleIsAdmin = (uuid: string) =>
+    async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+        const { resources } = getState();
+        const data = getResource<UserResource>(uuid)(resources);
+        const isAdmin = data!.isAdmin;
+        const newActivity = await services.userService.update(uuid, { isAdmin: !isAdmin });
+        dispatch<any>(loadUsersPanel());
+        return newActivity;
+    };
 
 const renderName = (dispatch: Dispatch, item: GroupContentsResource) => {
     const navFunc = "groupClass" in item && item.groupClass === GroupClass.ROLE ? navigateToGroupDetails : navigateTo;
diff --git a/services/workbench2/src/views-components/multiselect-toolbar/ms-menu-actions.ts b/services/workbench2/src/views-components/multiselect-toolbar/ms-menu-actions.ts
index c9cb473616..4d78733dfd 100644
--- a/services/workbench2/src/views-components/multiselect-toolbar/ms-menu-actions.ts
+++ b/services/workbench2/src/views-components/multiselect-toolbar/ms-menu-actions.ts
@@ -43,6 +43,10 @@ export enum MultiSelectMenuActionNames {
     RUN_WORKFLOW = 'Run Workflow',
     SHARE = 'Share',
     VIEW_DETAILS = 'View details',
+    ACTIVATE_USER = 'Activate user', 
+    DEACTIVATE_USER = 'Deactivate user', 
+    SETUP_USER = 'Setup user',
+    LOGIN_AS_USER = 'Login as user',
 };
 
 export type MultiSelectMenuAction = {
diff --git a/services/workbench2/src/views-components/multiselect-toolbar/ms-user-action-set.ts b/services/workbench2/src/views-components/multiselect-toolbar/ms-user-action-set.ts
index 0836ce02f0..bb115fba97 100644
--- a/services/workbench2/src/views-components/multiselect-toolbar/ms-user-action-set.ts
+++ b/services/workbench2/src/views-components/multiselect-toolbar/ms-user-action-set.ts
@@ -2,54 +2,78 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { AdvancedIcon, AttributesIcon } from "components/icon/icon";
-import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames } from "./ms-menu-actions";
+import { ActiveIcon, AdminMenuIcon, AdvancedIcon, AttributesIcon, DeactivateUserIcon, LoginAsIcon } from 'components/icon/icon';
+import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames } from './ms-menu-actions';
 import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
-import { Dispatch } from "redux";
-import { RootState } from "store/store";
-import { ServiceRepository } from "services/services";
-import { dialogActions } from "store/dialog/dialog-actions";
-import { UserResource } from "models/user";
-import { getResource } from "store/resources/resources";
+import { openActivateDialog, openDeactivateDialog, openSetupDialog } from 'store/user-profile/user-profile-actions';
+import { openUserAttributes } from 'store/users/users-actions';
+import { loginAs } from 'store/users/users-actions';
 
-const { ATTRIBUTES, API_DETAILS } = MultiSelectMenuActionNames
+const { ATTRIBUTES, API_DETAILS, SETUP_USER, ACTIVATE_USER, DEACTIVATE_USER, LOGIN_AS_USER } = MultiSelectMenuActionNames;
 
 export const USER_ATTRIBUTES_DIALOG = 'userAttributesDialog';
 
-const openUserAttributes = (uuid: string) =>
-    (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-        const { resources } = getState();
-        const data = getResource<UserResource>(uuid)(resources);
-        dispatch(dialogActions.OPEN_DIALOG({ id: USER_ATTRIBUTES_DIALOG, data }));
-    };
-
-const msUserAttributes: MultiSelectMenuAction  = {
-  name: ATTRIBUTES,
-  icon: AttributesIcon,
-  hasAlts: false,
-  isForMulti: false,
-  execute: (dispatch, resources) => {
-      dispatch<any>(openUserAttributes(resources[0].uuid));
-  },
+const msUserAttributes: MultiSelectMenuAction = {
+    name: ATTRIBUTES,
+    icon: AttributesIcon,
+    hasAlts: false,
+    isForMulti: false,
+    execute: (dispatch, resources) => {
+        dispatch<any>(openUserAttributes(resources[0].uuid));
+    },
 };
 
-const msAdvancedAction: MultiSelectMenuAction  = {
-  name: API_DETAILS,
-  icon: AdvancedIcon,
-  hasAlts: false,
-  isForMulti: false,
-  execute: (dispatch, resources) => {
-      dispatch<any>(openAdvancedTabDialog(resources[0].uuid));
-  },
+const msAdvancedAction: MultiSelectMenuAction = {
+    name: API_DETAILS,
+    icon: AdvancedIcon,
+    hasAlts: false,
+    isForMulti: false,
+    execute: (dispatch, resources) => {
+        dispatch<any>(openAdvancedTabDialog(resources[0].uuid));
+    },
 };
 
-export const msUserActionSet: MultiSelectMenuActionSet = [
-    [
-      msAdvancedAction, 
-      msUserAttributes
-    ]
-];
+const msActivateUser: MultiSelectMenuAction = {
+    name: ACTIVATE_USER,
+    icon: ActiveIcon,
+    hasAlts: false,
+    isForMulti: false,
+    execute: (dispatch, resources) => {
+        dispatch<any>(openActivateDialog(resources[0].uuid));
+    },
+};
 
+const msSetupUser: MultiSelectMenuAction = {
+    name: SETUP_USER,
+    icon: AdminMenuIcon,
+    hasAlts: false,
+    isForMulti: false,
+    execute: (dispatch, resources) => {
+        dispatch<any>(openSetupDialog(resources[0].uuid));
+    },
+};
 
-export const msUserCommonActionFilter = new Set([ATTRIBUTES, API_DETAILS]);
+const msDeactivateUser: MultiSelectMenuAction = {
+    name: DEACTIVATE_USER,
+    icon: DeactivateUserIcon,
+    hasAlts: false,
+    isForMulti: false,
+    execute: (dispatch, resources) => {
+        dispatch<any>(openDeactivateDialog(resources[0].uuid));
+    },
+};
 
+const msLoginAsUser: MultiSelectMenuAction = {
+    name: LOGIN_AS_USER,
+    icon: LoginAsIcon,
+    hasAlts: false,
+    isForMulti: false,
+    execute: (dispatch, resources) => {
+        dispatch<any>(loginAs(resources[0].uuid));
+    },
+};
+
+export const msUserActionSet: MultiSelectMenuActionSet = [[msAdvancedAction, msUserAttributes, msSetupUser, msActivateUser, msDeactivateUser, msLoginAsUser]];
+
+export const msUserCommonActionFilter = new Set([ATTRIBUTES, API_DETAILS]);
+export const msUserAdminActionFilter = new Set([ATTRIBUTES, API_DETAILS, SETUP_USER, ACTIVATE_USER, DEACTIVATE_USER, LOGIN_AS_USER]);

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list