[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