修复系统管理后台权限配置校验

This commit is contained in:
andy
2026-07-10 18:57:06 +08:00
parent aa5783ba61
commit bbd4ea22df
4 changed files with 117 additions and 10 deletions

View File

@@ -1,5 +1,6 @@
package cn.nianxx.thhotel.platform.access.service.impl;
import cn.nianxx.thhotel.platform.access.common.enums.PlatformPermissionStatus;
import cn.nianxx.thhotel.platform.access.common.enums.PlatformRoleStatus;
import cn.nianxx.thhotel.platform.access.common.request.AdminRoleCreateRequest;
import cn.nianxx.thhotel.platform.access.common.request.AdminRolePermissionAssignmentRequest;
@@ -315,12 +316,13 @@ public class AdminAccessManagementServiceImpl implements AdminAccessManagementSe
if (permissionIds == null || permissionIds.isEmpty()) {
return;
}
Set<Long> existingPermissionIds = accessRepository.listAllPermissions().stream()
Set<Long> activePermissionIds = accessRepository.listAllPermissions().stream()
.filter(permission -> PlatformPermissionStatus.ACTIVE.name().equals(permission.getPermissionStatus()))
.map(PlatformPermissionEntity::getId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
if (!existingPermissionIds.containsAll(permissionIds)) {
throw invalidRequest("存在不存在的权限 ID。");
if (!activePermissionIds.containsAll(permissionIds)) {
throw invalidRequest("存在不存在或未启用的权限 ID。");
}
}

View File

@@ -1,5 +1,6 @@
package cn.nianxx.thhotel.platform.identity.service.impl;
import cn.nianxx.thhotel.platform.access.common.enums.PlatformRoleStatus;
import cn.nianxx.thhotel.platform.access.domain.PlatformRoleEntity;
import cn.nianxx.thhotel.platform.access.domain.PlatformUserRoleEntity;
import cn.nianxx.thhotel.platform.access.repository.PlatformAccessRepository;
@@ -479,11 +480,12 @@ public class AdminUserManagementServiceImpl implements AdminUserManagementServic
if (roleIds == null || roleIds.isEmpty()) {
return;
}
Set<Long> existingRoleIds = accessRepository.listRolesByIds(roleIds).stream()
Set<Long> activeRoleIds = accessRepository.listRolesByIds(roleIds).stream()
.filter(role -> PlatformRoleStatus.ACTIVE.name().equals(role.getRoleStatus()))
.map(PlatformRoleEntity::getId)
.collect(Collectors.toSet());
if (!existingRoleIds.containsAll(roleIds)) {
throw invalidRequest("存在不存在的角色 ID。");
if (!activeRoleIds.containsAll(roleIds)) {
throw invalidRequest("存在不存在或未启用的角色 ID。");
}
}

View File

@@ -1,5 +1,6 @@
package cn.nianxx.thhotel.platform.navigation.service.impl;
import cn.nianxx.thhotel.platform.access.common.enums.PlatformPermissionStatus;
import cn.nianxx.thhotel.platform.access.repository.PlatformAccessRepository;
import cn.nianxx.thhotel.platform.audit.common.dto.PlatformAdminAuditLogDraft;
import cn.nianxx.thhotel.platform.audit.service.PlatformAdminAuditLogService;
@@ -44,7 +45,8 @@ public class AdminMenuManagementServiceImpl implements AdminMenuManagementServic
"/system/users",
"/system/roles",
"/system/menus",
"/system/hotels");
"/system/hotels",
"/system/audits");
private final PlatformNavigationRepository navigationRepository;
private final PlatformAccessRepository accessRepository;
@@ -231,8 +233,10 @@ public class AdminMenuManagementServiceImpl implements AdminMenuManagementServic
menu.setIconKey(trimToNull(iconKey));
String normalizedPermissionCode = trimToNull(permissionCode);
if (normalizedPermissionCode != null
&& accessRepository.findPermissionByCode(normalizedPermissionCode).isEmpty()) {
throw invalidRequest("菜单绑定的权限码不存在。");
&& accessRepository.findPermissionByCode(normalizedPermissionCode)
.filter(permission -> PlatformPermissionStatus.ACTIVE.name().equals(permission.getPermissionStatus()))
.isEmpty()) {
throw invalidRequest("菜单绑定的权限码不存在或未启用。");
}
menu.setPermissionCode(normalizedPermissionCode);
menu.setSortOrder(sortOrder == null ? 0 : sortOrder);