优化菜单赋权逻辑
This commit is contained in:
parent
0096f67553
commit
f2fdb4d4b5
|
|
@ -10,7 +10,8 @@ import java.util.function.BiPredicate;
|
|||
|
||||
@Getter
|
||||
@Setter
|
||||
public class MenuButtonInfo {
|
||||
public class MenuButtonInfo implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "按钮ID")
|
||||
private String id;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@ import java.util.Set;
|
|||
@Setter
|
||||
@AllArgsConstructor(staticName = "of")
|
||||
@NoArgsConstructor
|
||||
public class PermissionInfo {
|
||||
public class PermissionInfo implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "权限ID")
|
||||
private String permission;
|
||||
|
|
|
|||
|
|
@ -13,9 +13,8 @@ import org.jetlinks.community.auth.entity.MenuEntity;
|
|||
import org.jetlinks.community.auth.entity.MenuView;
|
||||
import org.jetlinks.community.auth.entity.PermissionInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
|
@ -55,7 +54,7 @@ public class MenuGrantRequest {
|
|||
detail.setMerge(merge);
|
||||
detail.setPriority(priority);
|
||||
|
||||
List<AuthorizationSettingDetail.PermissionInfo> permissionInfos = new ArrayList<>();
|
||||
Map<String, Set<String>> permissionInfos = new ConcurrentHashMap<>();
|
||||
|
||||
for (MenuView menu : menus) {
|
||||
//平铺
|
||||
|
|
@ -68,7 +67,9 @@ public class MenuGrantRequest {
|
|||
//自动持有配置的权限
|
||||
if (CollectionUtils.isNotEmpty(entity.getPermissions())) {
|
||||
for (PermissionInfo permission : entity.getPermissions()) {
|
||||
permissionInfos.add(AuthorizationSettingDetail.PermissionInfo.of(permission.getPermission(), permission.getActions()));
|
||||
permissionInfos
|
||||
.computeIfAbsent(permission.getPermission(), ignore -> new HashSet<>())
|
||||
.addAll(permission.getActions());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -78,8 +79,12 @@ public class MenuGrantRequest {
|
|||
.ifPresent(buttonInfo -> {
|
||||
if (CollectionUtils.isNotEmpty(buttonInfo.getPermissions())) {
|
||||
for (PermissionInfo permission : buttonInfo.getPermissions()) {
|
||||
if (CollectionUtils.isEmpty(permission.getActions())) {
|
||||
continue;
|
||||
}
|
||||
permissionInfos
|
||||
.add(AuthorizationSettingDetail.PermissionInfo.of(permission.getPermission(), permission.getActions()));
|
||||
.computeIfAbsent(permission.getPermission(), ignore -> new HashSet<>())
|
||||
.addAll(permission.getActions());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -88,7 +93,12 @@ public class MenuGrantRequest {
|
|||
}
|
||||
}
|
||||
}
|
||||
detail.setPermissionList(permissionInfos);
|
||||
detail.setPermissionList(permissionInfos
|
||||
.entrySet()
|
||||
.stream()
|
||||
.map(e -> AuthorizationSettingDetail.PermissionInfo.of(e.getKey(), e.getValue()))
|
||||
.collect(Collectors.toList()));
|
||||
|
||||
|
||||
return detail;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue