diff --git a/project-management/backend/src/main/java/io/metersphere/service/GroupService.java b/project-management/backend/src/main/java/io/metersphere/service/GroupService.java index 58327c28c6..0c857795b7 100644 --- a/project-management/backend/src/main/java/io/metersphere/service/GroupService.java +++ b/project-management/backend/src/main/java/io/metersphere/service/GroupService.java @@ -511,12 +511,10 @@ public class GroupService { return; } - if (StringUtils.equals(group.getType(), UserGroupType.SYSTEM)) { - this.addSystemGroupUser(group, request.getUserIds()); + if (!StringUtils.equals(group.getType(), UserGroupType.SYSTEM) && CollectionUtils.isNotEmpty(request.getSourceIds())) { + this.addNotSystemGroupUser(group, request.getUserIds(), request.getSourceIds()); } else { - if (CollectionUtils.isNotEmpty(request.getSourceIds())) { - this.addNotSystemGroupUser(group, request.getUserIds(), request.getSourceIds()); - } + LogUtil.warn("no permission to add system group!"); } } diff --git a/system-setting/backend/src/main/java/io/metersphere/service/GroupService.java b/system-setting/backend/src/main/java/io/metersphere/service/GroupService.java index 4d4d9180ec..d2b5874abe 100644 --- a/system-setting/backend/src/main/java/io/metersphere/service/GroupService.java +++ b/system-setting/backend/src/main/java/io/metersphere/service/GroupService.java @@ -471,7 +471,13 @@ public class GroupService { } if (StringUtils.equals(group.getType(), UserGroupType.SYSTEM)) { - this.addSystemGroupUser(group, request.getUserIds()); + SessionUser user = Objects.requireNonNull(SessionUtils.getUser()); + long count = user.getGroups().stream().filter(g -> StringUtils.equals(g.getType(), UserGroupType.SYSTEM)).count(); + if (count > 0) { + this.addSystemGroupUser(group, request.getUserIds()); + } else { + LogUtil.warn("no permission to add system group!"); + } } else { if (CollectionUtils.isNotEmpty(request.getSourceIds())) { this.addNotSystemGroupUser(group, request.getUserIds(), request.getSourceIds()); diff --git a/system-setting/backend/src/main/java/io/metersphere/service/UserService.java b/system-setting/backend/src/main/java/io/metersphere/service/UserService.java index 2f062012a8..f825a6f952 100644 --- a/system-setting/backend/src/main/java/io/metersphere/service/UserService.java +++ b/system-setting/backend/src/main/java/io/metersphere/service/UserService.java @@ -808,25 +808,31 @@ public class UserService { } } + SessionUser user = Objects.requireNonNull(SessionUtils.getUser()); + long systemGroupCount = user.getGroups().stream().filter(g -> StringUtils.equals(g.getType(), UserGroupType.SYSTEM)).count(); + for (String userId : userIds) { Set set = sourceMap.keySet(); for (String group : set) { Group gp = groupMapper.selectByPrimaryKey(group); if (gp != null) { if (StringUtils.equals(UserGroupType.SYSTEM, gp.getType())) { - UserGroupExample userGroupExample = new UserGroupExample(); - userGroupExample.createCriteria().andGroupIdEqualTo(group).andUserIdEqualTo(userId); - List userGroups = userGroupMapper.selectByExample(userGroupExample); - if (CollectionUtils.isEmpty(userGroups)) { - UserGroup userGroup = new UserGroup(); - userGroup.setId(UUID.randomUUID().toString()); - userGroup.setGroupId(group); - userGroup.setSourceId("system"); - userGroup.setUserId(userId); - userGroup.setUpdateTime(System.currentTimeMillis()); - userGroup.setCreateTime(System.currentTimeMillis()); - userGroupMapper.insertSelective(userGroup); + if (systemGroupCount > 0) { + UserGroupExample userGroupExample = new UserGroupExample(); + userGroupExample.createCriteria().andGroupIdEqualTo(group).andUserIdEqualTo(userId); + List userGroups = userGroupMapper.selectByExample(userGroupExample); + if (CollectionUtils.isEmpty(userGroups)) { + UserGroup userGroup = new UserGroup(); + userGroup.setId(UUID.randomUUID().toString()); + userGroup.setGroupId(group); + userGroup.setSourceId("system"); + userGroup.setUserId(userId); + userGroup.setUpdateTime(System.currentTimeMillis()); + userGroup.setCreateTime(System.currentTimeMillis()); + userGroupMapper.insertSelective(userGroup); + } } + } else { // 组织、工作空间、项目 UserGroupExample userGroupExample = new UserGroupExample();