|
@@ -2,14 +2,19 @@ package cn.tr.module.sys.oauth2.service;
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.tr.core.exception.ServiceException;
|
|
import cn.tr.core.exception.ServiceException;
|
|
|
import cn.tr.core.exception.TRExcCode;
|
|
import cn.tr.core.exception.TRExcCode;
|
|
|
|
|
+import cn.tr.core.strategy.LoginUserStrategy;
|
|
|
import cn.tr.module.sys.tenant.service.ISysTenantService;
|
|
import cn.tr.module.sys.tenant.service.ISysTenantService;
|
|
|
|
|
+import cn.tr.module.sys.tenant.vo.SysTenantCommonVO;
|
|
|
import cn.tr.module.sys.user.dto.SysMenuDTO;
|
|
import cn.tr.module.sys.user.dto.SysMenuDTO;
|
|
|
import cn.tr.module.sys.user.dto.SysRoleDTO;
|
|
import cn.tr.module.sys.user.dto.SysRoleDTO;
|
|
|
import cn.tr.module.sys.user.dto.SysUserPortalListDTO;
|
|
import cn.tr.module.sys.user.dto.SysUserPortalListDTO;
|
|
|
import cn.tr.module.sys.user.enums.MenuEnum;
|
|
import cn.tr.module.sys.user.enums.MenuEnum;
|
|
|
|
|
+import cn.tr.module.sys.user.po.SysUserPO;
|
|
|
|
|
+import cn.tr.module.sys.user.repository.SysUserRepository;
|
|
|
import cn.tr.module.sys.user.service.ISysMenuService;
|
|
import cn.tr.module.sys.user.service.ISysMenuService;
|
|
|
import cn.tr.module.sys.user.service.ISysPortalMenuService;
|
|
import cn.tr.module.sys.user.service.ISysPortalMenuService;
|
|
|
import cn.tr.module.sys.user.service.ISysUserPortalService;
|
|
import cn.tr.module.sys.user.service.ISysUserPortalService;
|
|
@@ -44,6 +49,8 @@ public class CurrentUserService {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private ISysUserRoleService userRoleService;
|
|
private ISysUserRoleService userRoleService;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private SysUserRepository userRepository;
|
|
|
@Value("${tr.tenant.enable}")
|
|
@Value("${tr.tenant.enable}")
|
|
|
private Boolean tenantEnable;
|
|
private Boolean tenantEnable;
|
|
|
/**
|
|
/**
|
|
@@ -52,8 +59,13 @@ public class CurrentUserService {
|
|
|
*/
|
|
*/
|
|
|
public Collection<String> currentUserPermission(String userId){
|
|
public Collection<String> currentUserPermission(String userId){
|
|
|
if (Boolean.TRUE.equals(tenantEnable)) {
|
|
if (Boolean.TRUE.equals(tenantEnable)) {
|
|
|
- //用户所在租户拥有的权限
|
|
|
|
|
|
|
+ SysTenantCommonVO tenant = tenantService.selectSysTenantById(LoginUserStrategy.tr.getTenantId());
|
|
|
Set<String> tenantPermissions = tenantService.findTenantPermission();
|
|
Set<String> tenantPermissions = tenantService.findTenantPermission();
|
|
|
|
|
+ if(ObjectUtil.isNotNull(tenant)){
|
|
|
|
|
+ //用户所在租户拥有的权限
|
|
|
|
|
+ if(StrUtil.equals(tenant.getUsername(),LoginUserStrategy.tr.getCurrentUsername()))
|
|
|
|
|
+ return tenantPermissions;
|
|
|
|
|
+ }
|
|
|
//用户角色所拥有的权限
|
|
//用户角色所拥有的权限
|
|
|
Set<String> rolePermissions = menuService.findUserPermission(userId);
|
|
Set<String> rolePermissions = menuService.findUserPermission(userId);
|
|
|
return CollectionUtil.intersection(tenantPermissions,rolePermissions);
|
|
return CollectionUtil.intersection(tenantPermissions,rolePermissions);
|
|
@@ -84,8 +96,15 @@ public class CurrentUserService {
|
|
|
}else {
|
|
}else {
|
|
|
tenantMenus=roleMenus;
|
|
tenantMenus=roleMenus;
|
|
|
}
|
|
}
|
|
|
|
|
+ SysTenantCommonVO tenant = tenantService.selectSysTenantById(LoginUserStrategy.tr.getTenantId());
|
|
|
|
|
+ if(ObjectUtil.isNotNull(tenant)){
|
|
|
|
|
+ //用户所在租户拥有的权限
|
|
|
|
|
+ if(StrUtil.equals(tenant.getUsername(),LoginUserStrategy.tr.getCurrentUsername()))
|
|
|
|
|
+ return tenantMenus.stream().filter(menu -> !StrUtil.equals(MenuEnum.button.name(), menu.getMenuType()))
|
|
|
|
|
+ .map(menuService::convertToRoute)
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ }
|
|
|
//菜单加按钮
|
|
//菜单加按钮
|
|
|
-
|
|
|
|
|
List<SysMenuDTO> pageMenuList = tenantMenus
|
|
List<SysMenuDTO> pageMenuList = tenantMenus
|
|
|
.stream()
|
|
.stream()
|
|
|
.filter(menu -> !StrUtil.equals(MenuEnum.button.name(), menu.getMenuType()))
|
|
.filter(menu -> !StrUtil.equals(MenuEnum.button.name(), menu.getMenuType()))
|