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<any>(loadGroupsPanel());
}
};
-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 };
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 },
};
+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 };