This is an automated email from the ASF dual-hosted git repository. nicholasjiang pushed a commit to branch branch-0.1 in repository https://gitbox.apache.org/repos/asf/paimon-webui.git
commit 5e820af3eb7881782daeb9036bdf2653c183ec66 Author: s7monk <[email protected]> AuthorDate: Tue Jul 9 20:02:20 2024 +0800 [Improvement] Support indeterminate keys with the permission configuration of role creation (#474) --- .../apache/paimon/web/server/data/model/SysRole.java | 4 ++++ .../web/server/service/impl/SysRoleServiceImpl.java | 20 +++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/model/SysRole.java b/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/model/SysRole.java index 47754a4d..e037ccd8 100644 --- a/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/model/SysRole.java +++ b/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/model/SysRole.java @@ -63,6 +63,10 @@ public class SysRole extends BaseModel { @NotEmpty(message = "invalid.menuIds") private Integer[] menuIds; + /** indeterminate keys. */ + @TableField(exist = false) + private Integer[] indeterminateKeys; + /** Role menu permissions. */ @TableField(exist = false) private Set<String> permissions; diff --git a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/SysRoleServiceImpl.java b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/SysRoleServiceImpl.java index 2cf0a867..aa3bbb6e 100644 --- a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/SysRoleServiceImpl.java +++ b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/SysRoleServiceImpl.java @@ -195,22 +195,32 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> * @param role role info */ public int insertRoleMenu(SysRole role) { + Integer[] mergedMenuIds = mergeMenuIds(role.getMenuIds(), role.getIndeterminateKeys()); int rows = 1; - if (role.getMenuIds() != null && role.getMenuIds().length > 0) { + if (mergedMenuIds.length > 0) { List<RoleMenu> list = new ArrayList<RoleMenu>(); - for (Integer menuId : role.getMenuIds()) { + for (Integer menuId : mergedMenuIds) { RoleMenu rm = new RoleMenu(); rm.setRoleId(role.getId()); rm.setMenuId(menuId); list.add(rm); } - if (list.size() > 0) { - rows = roleMenuMapper.batchRoleMenu(list); - } + rows = roleMenuMapper.batchRoleMenu(list); } return rows; } + private Integer[] mergeMenuIds(Integer[] menuIds, Integer[] indeterminateKeys) { + Set<Integer> mergedSet = new HashSet<>(); + if (menuIds != null) { + mergedSet.addAll(Arrays.asList(menuIds)); + } + if (indeterminateKeys != null) { + mergedSet.addAll(Arrays.asList(indeterminateKeys)); + } + return mergedSet.toArray(new Integer[0]); + } + /** * Delete role. *
