Commit 3406908986072f5f838d903130118947e32816ef

Authored by xp.Huang
2 parents fe1ca9bc 893140e6

Merge branch '20230822' into 'master_dev'

refactor: 租户管理员权限兼容老版本

See merge request yunteng/thingskit!225
... ... @@ -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(
... ...