X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/295d62fd5e44819cb55737a86c42db633e097cd8..24e864bc823b27ac27c39e9e5879987924330007:/src/store/groups-panel/groups-panel-actions.ts diff --git a/src/store/groups-panel/groups-panel-actions.ts b/src/store/groups-panel/groups-panel-actions.ts index 1c6223bd9f..b7cf480545 100644 --- a/src/store/groups-panel/groups-panel-actions.ts +++ b/src/store/groups-panel/groups-panel-actions.ts @@ -44,7 +44,7 @@ export const openGroupAttributes = (uuid: string) => export const removeGroup = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { - dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removing ...' })); + dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removing ...', kind: SnackbarKind.INFO })); await services.groupsService.delete(uuid); dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removed.', hideDuration: 2000, kind: SnackbarKind.SUCCESS })); dispatch(loadGroupsPanel()); @@ -110,29 +110,6 @@ export const createGroup = ({ name, users = [] }: CreateGroupFormData) => } }; -interface DeleteGroupMemberArgs { - user: { uuid: string, name: string }; - group: { uuid: string, name: string }; - dispatch: Dispatch; - permissionService: PermissionService; -} - -export const deleteGroupMember = async ({ user, group, ...args }: DeleteGroupMemberArgs) => { - - await deletePermission({ - tail: user, - head: group, - ...args, - }); - - await deletePermission({ - tail: group, - head: user, - ...args, - }); - -}; - interface AddGroupMemberArgs { user: { uuid: string, name: string }; group: { uuid: string, name: string }; @@ -140,17 +117,14 @@ interface AddGroupMemberArgs { permissionService: PermissionService; } +/** + * Group membership is determined by whether the group has can_read permission on an object. + * If a group G can_read an object A, then we say A is a member of G. + * + * [Permission model docs](https://doc.arvados.org/api/permission-model.html) + */ export const addGroupMember = async ({ user, group, ...args }: AddGroupMemberArgs) => { - - - await createPermission({ - head: { ...group }, - tail: { ...user }, - permissionLevel: PermissionLevel.CAN_MANAGE, - ...args, - }); - await createPermission({ head: { ...user }, tail: { ...group }, @@ -189,6 +163,23 @@ const createPermission = async ({ head, tail, permissionLevel, dispatch, permiss }; +interface DeleteGroupMemberArgs { + user: { uuid: string, name: string }; + group: { uuid: string, name: string }; + dispatch: Dispatch; + permissionService: PermissionService; +} + +export const deleteGroupMember = async ({ user, group, ...args }: DeleteGroupMemberArgs) => { + + await deletePermission({ + tail: group, + head: user, + ...args, + }); + +}; + interface DeletePermissionLinkArgs { head: { uuid: string, name: string }; tail: { uuid: string, name: string };