Skip to content

Commit 2c41177

Browse files
author
pedro
authored
Merge pull request #15 from TaleLin/fix/ban-operate-root
Fix/ban operate root
2 parents e87d502 + 0334742 commit 2c41177

8 files changed

Lines changed: 36 additions & 37 deletions

File tree

src/main/java/io/github/talelin/merak/mapper/UserMapper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ public interface UserMapper extends BaseMapper<UserDO> {
3535
*
3636
* @param pager 分页
3737
* @param groupId 分组id
38+
* @param rootGroupId 超级用户组id(不返回超级用户组的用户)
3839
* @return 分页数据
3940
*/
40-
IPage<UserDO> selectPageByGroupId(Page pager, Long groupId);
41+
IPage<UserDO> selectPageByGroupId(Page pager, Long groupId, Long rootGroupId);
4142
}

src/main/java/io/github/talelin/merak/service/impl/AdminServiceImpl.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,18 @@ public class AdminServiceImpl implements AdminService {
4545
@Value("${group.guest.id}")
4646
private Long guestGroupId;
4747

48+
@Value("${user.root.id}")
49+
private Long rootUserId;
50+
4851
@Override
4952
public IPage<UserDO> getUserPageByGroupId(Long groupId, Long count, Long page) {
5053
Page pager = new Page(page, count);
5154
IPage<UserDO> iPage;
5255
// 如果group_id为空,则以分页的形式返回所有用户
5356
if (groupId == null) {
54-
iPage = userService.page(pager);
57+
QueryWrapper<UserDO> wrapper = new QueryWrapper<>();
58+
wrapper.lambda().ne(UserDO::getId, rootUserId);
59+
iPage = userService.page(pager, wrapper);
5560
} else {
5661
iPage = userService.getUserPageByGroupId(pager, groupId);
5762
}
@@ -166,7 +171,10 @@ public boolean removePermissions(RemovePermissionsDTO dto) {
166171

167172
@Override
168173
public List<GroupDO> getAllGroups() {
169-
return groupService.list();
174+
QueryWrapper<GroupDO> wrapper = new QueryWrapper<>();
175+
wrapper.lambda().ne(GroupDO::getId, rootGroupId);
176+
List<GroupDO> groups = groupService.list(wrapper);
177+
return groups;
170178
}
171179

172180
@Override

src/main/java/io/github/talelin/merak/service/impl/GroupServiceImpl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ public boolean checkIsRootByUserId(Long userId) {
8787
public boolean deleteUserGroupRelations(Long userId, List<Long> deleteIds) {
8888
if (deleteIds == null || deleteIds.isEmpty())
8989
return true;
90+
if (checkIsRootByUserId(userId)) {
91+
throw new ForbiddenException("can't modify the root user's group", 10078);
92+
}
9093
QueryWrapper<UserGroupDO> wrapper = new QueryWrapper<>();
9194
wrapper.lambda()
9295
.eq(UserGroupDO::getUserId, userId)

src/main/java/io/github/talelin/merak/service/impl/UserServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ public boolean checkUserExistById(Long id) {
186186

187187
@Override
188188
public IPage<UserDO> getUserPageByGroupId(Page pager, Long groupId) {
189-
return this.baseMapper.selectPageByGroupId(pager, groupId);
189+
return this.baseMapper.selectPageByGroupId(pager, groupId, rootGroupId);
190190
}
191191

192192
private void checkGroupsExist(List<Long> ids) {

src/main/resources/banner.txt

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,17 @@
1-
////////////////////////////////////////////////////////////////////
2-
______ _
3-
| ___ \ | |
4-
| |_/ /__ __| |_ __ ___
5-
| __/ _ \/ _` | '__/ _ \
6-
| | | __/ (_| | | | (_) |
7-
\_| \___|\__,_|_| \___/
8-
9-
////////////////////////////////////////////////////////////////////
10-
// _ooOoo_ //
11-
// o8888888o //
12-
// 88" . "88 //
13-
// (| ^_^ |) //
14-
// O\ = /O //
15-
// ____/`---'\____ //
16-
// .' \\| |// `. //
17-
// / \\||| : |||// \ //
18-
// / _||||| -:- |||||- \ //
19-
// | | \\\ - /// | | //
20-
// | \_| ''\---/'' | | //
21-
// \ .-\__ `-` ___/-. / //
22-
// ___`. .' /--.--\ `. . ___ //
23-
// ."" '< `.___\_<|>_/___.' >'"". //
24-
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
25-
// \ \ `-. \_ __\ /__ _/ .-` / / //
26-
// ========`-.____`-.___\_____/___.-`____.-'======== //
27-
// `=---=' //
28-
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
29-
// 佛祖保佑 永不宕机 永无BUG //
30-
////////////////////////////////////////////////////////////////////
31-
解放生产力
32-
////////////////////////////////////////////////////////////////////
1+
///////////////////////////////////////////////////////////////////////////
2+
// _ _ _____ _ __ _____ //
3+
// | | (_) / ____| \/ |/ ____| //
4+
// | | _ _ __ | | | \ / | (___ //
5+
// | | | | '_ \ | | | |\/| |\___ \ //
6+
// | |____| | | | | | |____| | | |____) | //
7+
// |______|_|_| |_| \_____|_| |_|_____/ //
8+
// //
9+
///////////////////////////////////////////////////////////////////////////
10+
// _______ _______ _ _ _ //
11+
// |__ __| |__ __| | | | | (_) //
12+
// | | ___ __ _ _ __ ___ | | __ _| | ___| | _ _ __ //
13+
// | |/ _ \/ _` | '_ ` _ \ | |/ _` | |/ _ \ | | | '_ \ //
14+
// | | __/ (_| | | | | | | | | (_| | | __/ |____| | | | | //
15+
// |_|\___|\__,_|_| |_| |_| |_|\__,_|_|\___|______|_|_| |_| //
16+
// //
17+
///////////////////////////////////////////////////////////////////////////

src/main/resources/code.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ lin.cms.code-message[10074]=root\u5206\u7EC4\u4E0D\u53EF\u5220\u9664
4646
lin.cms.code-message[10075]=guest\u5206\u7EC4\u4E0D\u53EF\u5220\u9664
4747
lin.cms.code-message[10076]=\u90AE\u7BB1\u5DF2\u88AB\u4F7F\u7528\uFF0C\u8BF7\u91CD\u65B0\u586B\u5165\u65B0\u7684\u90AE\u7BB1
4848
lin.cms.code-message[10077]=\u4E0D\u53EF\u5C06\u7528\u6237\u5206\u914D\u7ED9\u4E0D\u5B58\u5728\u7684\u5206\u7EC4
49+
lin.cms.code-message[10078]=\u4E0D\u53EF\u4FEE\u6539root\u7528\u6237\u7684\u5206\u7EC4
4950
# lin.cms.code-message[10080]=\u8BF7\u6C42\u65B9\u6CD5\u4E0D\u5141\u8BB8
5051
# lin.cms.code-message[10100]=\u5237\u65B0\u4EE4\u724C\u83B7\u53D6\u5931\u8D25
5152
# lin.cms.code-message[10110]=\u6587\u4EF6\u4F53\u79EF\u8FC7\u5927

src/main/resources/mapper/UserMapper.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
SELECT ug.user_id
3333
FROM lin_user_group AS ug
3434
WHERE ug.group_id = #{groupId}
35+
AND ug.group_id != #{rootGroupId}
3536
)
3637
AND u.delete_time IS NULL
3738
</select>

src/test/java/io/github/talelin/merak/mapper/UserMapperTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public void selectPageByGroupId() {
7373
userGroupMapper.insert(new UserGroupDO(userDO.getId(), group.getId()));
7474

7575
Page page = new Page(0, 10);
76-
IPage<UserDO> iPage = userMapper.selectPageByGroupId(page, group.getId());
76+
IPage<UserDO> iPage = userMapper.selectPageByGroupId(page, group.getId(), 1L);
7777
assertTrue(iPage.getTotal() > 0);
7878
boolean anyMatch = iPage.getRecords().stream().anyMatch(it -> it.getUsername().equals(username));
7979
assertTrue(anyMatch);

0 commit comments

Comments
 (0)