Commit 3406908986072f5f838d903130118947e32816ef
Merge branch '20230822' into 'master_dev'
refactor: 租户管理员权限兼容老版本 See merge request yunteng/thingskit!225
Showing
4 changed files
with
24 additions
and
15 deletions
... | ... | @@ -10,6 +10,7 @@ import org.thingsboard.server.common.data.yunteng.enums.UserStatusEnum; |
10 | 10 | |
11 | 11 | import javax.validation.constraints.NotEmpty; |
12 | 12 | import java.time.LocalDateTime; |
13 | +import java.util.List; | |
13 | 14 | import java.util.Set; |
14 | 15 | |
15 | 16 | @EqualsAndHashCode(callSuper = false) |
... | ... | @@ -38,7 +39,7 @@ public class UserDTO extends BaseDTO { |
38 | 39 | private String[] organizationIds; |
39 | 40 | |
40 | 41 | @ApiModelProperty(value = "角色ids") |
41 | - private String[] roleIds; | |
42 | + private List<String> roleIds; | |
42 | 43 | |
43 | 44 | @ApiModelProperty(value = "电话号码") |
44 | 45 | @NotEmpty(message = "电话号码不能为空或字符串", groups = AddGroup.class) | ... | ... |
... | ... | @@ -50,11 +50,12 @@ public class SysMenuServiceImpl extends AbstractBaseService<MenuMapper, SysMenuE |
50 | 50 | List<MenuDTO> menuDTOs; |
51 | 51 | if (isSysAdminOrPtAdmin) { |
52 | 52 | menuDTOs = baseMapper.selectSysAdminMenu(); |
53 | - } else if (isTenantAdmin) { | |
54 | - menuDTOs = baseMapper.selectTenantMenu(tenantId); | |
55 | - } else { | |
53 | + } else { | |
56 | 54 | menuDTOs = baseMapper.selectMyMenu(userId); |
57 | 55 | } |
56 | + if (isTenantAdmin && menuDTOs ==null) { | |
57 | + menuDTOs = baseMapper.selectTenantMenu(tenantId); | |
58 | + } | |
58 | 59 | Map<String, MenuDTO> menuDTOMap = new LinkedHashMap<>(menuDTOs.size()); |
59 | 60 | menuDTOs.forEach(menuDTO -> menuDTOMap.put(menuDTO.getId(), menuDTO)); |
60 | 61 | return buildMenuDTOTree(menuDTOMap, needButton); | ... | ... |
... | ... | @@ -110,20 +110,22 @@ public class SysRoleServiceImpl extends AbstractBaseService<RoleMapper, SysRoleE |
110 | 110 | cacheUtils.get(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY, cacheKey); |
111 | 111 | cachePresent = optionalPermission.isPresent(); |
112 | 112 | allPermission = optionalPermission.orElseGet(menuMapper::getAllPermission); |
113 | - } else if (isTenantAdmin) { | |
114 | - cacheKey = FastIotConstants.CacheConfigKey.USER_PERMISSION_PREFIX + tenantId; | |
113 | + } else { | |
114 | + cacheKey = FastIotConstants.CacheConfigKey.USER_PERMISSION_PREFIX + useerId; | |
115 | 115 | Optional<Set<String>> optionalPermission = |
116 | 116 | cacheUtils.get(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY, cacheKey); |
117 | 117 | cachePresent = optionalPermission.isPresent(); |
118 | 118 | allPermission = |
119 | - optionalPermission.orElseGet(() -> menuMapper.getAllPermissionsByTenantId(tenantId)); | |
120 | - } else { | |
121 | - cacheKey = FastIotConstants.CacheConfigKey.USER_PERMISSION_PREFIX + useerId; | |
119 | + optionalPermission.orElseGet(() -> menuMapper.getAllPermissionsByUserId(useerId)); | |
120 | + } | |
121 | + /**租户管理员未获取到用户权限时,默认使用租户的权限*/ | |
122 | + if (isTenantAdmin && allPermission.isEmpty()) { | |
123 | + cacheKey = FastIotConstants.CacheConfigKey.USER_PERMISSION_PREFIX + tenantId; | |
122 | 124 | Optional<Set<String>> optionalPermission = |
123 | 125 | cacheUtils.get(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY, cacheKey); |
124 | 126 | cachePresent = optionalPermission.isPresent(); |
125 | 127 | allPermission = |
126 | - optionalPermission.orElseGet(() -> menuMapper.getAllPermissionsByUserId(useerId)); | |
128 | + optionalPermission.orElseGet(() -> menuMapper.getAllPermissionsByTenantId(tenantId)); | |
127 | 129 | } |
128 | 130 | if (cachePresent) { |
129 | 131 | return allPermission; | ... | ... |
... | ... | @@ -130,7 +130,7 @@ public class SysUserServiceImpl extends AbstractBaseService<UserMapper, SysUserE |
130 | 130 | SysUserRoleEntity userRole = new SysUserRoleEntity(); |
131 | 131 | userRole.setUserId(user.getId()); |
132 | 132 | userRole.setRoleId(roleId); |
133 | - userRoleMapper.insert(userRole); | |
133 | +// userRoleMapper.insert(userRole); | |
134 | 134 | } |
135 | 135 | // 绑定用户和组织的关系 |
136 | 136 | organizationService.bindUserToOrganization( |
... | ... | @@ -311,9 +311,11 @@ public class SysUserServiceImpl extends AbstractBaseService<UserMapper, SysUserE |
311 | 311 | } |
312 | 312 | baseMapper.updateById(user); |
313 | 313 | if (null != userDTO.getRoleIds()) { |
314 | - deleteAndAddUserRole(user.getId(), Arrays.asList(userDTO.getRoleIds())); | |
314 | + deleteAndAddUserRole(user.getId(), userDTO.getRoleIds()); | |
315 | + } | |
316 | + if (null != userDTO.getOrganizationIds()) { | |
315 | 317 | userOrganizationMappingService.addOrUpdateUserOrganizationMapping( |
316 | - user.getId(), Arrays.asList(userDTO.getOrganizationIds()), true); | |
318 | + user.getId(), Arrays.asList(userDTO.getOrganizationIds()), true); | |
317 | 319 | } |
318 | 320 | user.copyToDTO(userDTO, PASSWORD, ACTIVATE_TOKEN); |
319 | 321 | return userDTO; |
... | ... | @@ -449,8 +451,8 @@ public class SysUserServiceImpl extends AbstractBaseService<UserMapper, SysUserE |
449 | 451 | } |
450 | 452 | baseMapper.insert(user); |
451 | 453 | List<SysTenantRoleEntity> tenantRoleList = validateTenantRole(userDTO.getTenantId()); |
452 | - for (SysTenantRoleEntity tenantRole : tenantRoleList) { | |
453 | - roleMapper.saveUserRoleMapping(user.getId(), tenantRole.getRoleId()); | |
454 | + for (String roleId : userDTO.getRoleIds()) { | |
455 | + roleMapper.saveUserRoleMapping(user.getId(), roleId); | |
454 | 456 | } |
455 | 457 | user.copyToDTO(userDTO, PASSWORD, ACTIVATE_TOKEN); |
456 | 458 | return userDTO; |
... | ... | @@ -598,6 +600,9 @@ public class SysUserServiceImpl extends AbstractBaseService<UserMapper, SysUserE |
598 | 600 | .stream() |
599 | 601 | .map(SysUserRoleEntity::getRoleId) |
600 | 602 | .collect(Collectors.toList()); |
603 | + if(roleIds.isEmpty()){ | |
604 | + roleIds.add(UUID.randomUUID().toString()); | |
605 | + } | |
601 | 606 | List<String> enableRoles = |
602 | 607 | roleMapper |
603 | 608 | .selectList( | ... | ... |