fix 修复 解决通过loginId查询角色和菜单权限 而非当前用户时 报错问题 支持跨服务查询权限信息通过satoken的api

dev
疯狂的狮子Li 7 months ago
parent 01bf26d39f
commit f15e8f1ffa

@ -0,0 +1,28 @@
package org.dromara.system.api;
import java.util.Set;
/**
*
*
* @author Lion Li
*/
public interface RemotePermissionService {
/**
*
*
* @param userId id
* @return
*/
Set<String> getRolePermission(Long userId);
/**
*
*
* @param userId id
* @return
*/
Set<String> getMenuPermission(Long userId);
}

@ -0,0 +1,28 @@
package org.dromara.common.core.service;
import java.util.Set;
/**
*
*
* @author Lion Li
*/
public interface PermissionService {
/**
*
*
* @param userId id
* @return
*/
Set<String> getRolePermission(Long userId);
/**
*
*
* @param userId id
* @return
*/
Set<String> getMenuPermission(Long userId);
}

@ -1,9 +1,13 @@
package org.dromara.common.satoken.core.service;
import cn.dev33.satoken.stp.StpInterface;
import cn.hutool.core.util.ObjectUtil;
import org.dromara.common.core.enums.UserType;
import org.dromara.common.core.service.PermissionService;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
@ -15,19 +19,25 @@ import java.util.List;
*/
public class SaPermissionImpl implements StpInterface {
@Autowired
private PermissionService permissionService;
/**
*
*/
@Override
public List<String> getPermissionList(Object loginId, String loginType) {
LoginUser loginUser = LoginHelper.getLoginUser();
if (ObjectUtil.isNull(loginUser)) {
List<String> list = StringUtils.splitList(loginId.toString(), ":");
return new ArrayList<>(permissionService.getMenuPermission(Long.parseLong(list.get(1))));
}
UserType userType = UserType.getUserType(loginUser.getUserType());
if (userType == UserType.SYS_USER) {
return new ArrayList<>(loginUser.getMenuPermission());
} else if (userType == UserType.APP_USER) {
if (userType == UserType.APP_USER) {
// 其他端 自行根据业务编写
}
return new ArrayList<>();
// SYS_USER 默认返回权限
return new ArrayList<>(loginUser.getMenuPermission());
}
/**
@ -36,12 +46,15 @@ public class SaPermissionImpl implements StpInterface {
@Override
public List<String> getRoleList(Object loginId, String loginType) {
LoginUser loginUser = LoginHelper.getLoginUser();
if (ObjectUtil.isNull(loginUser)) {
List<String> list = StringUtils.splitList(loginId.toString(), ":");
return new ArrayList<>(permissionService.getRolePermission(Long.parseLong(list.get(1))));
}
UserType userType = UserType.getUserType(loginUser.getUserType());
if (userType == UserType.SYS_USER) {
return new ArrayList<>(loginUser.getRolePermission());
} else if (userType == UserType.APP_USER) {
if (userType == UserType.APP_USER) {
// 其他端 自行根据业务编写
}
return new ArrayList<>();
// SYS_USER 默认返回权限
return new ArrayList<>(loginUser.getRolePermission());
}
}

@ -0,0 +1,31 @@
package org.dromara.common.core.service.impl;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.service.PermissionService;
import org.dromara.system.api.RemotePermissionService;
import org.springframework.stereotype.Service;
import java.util.Set;
/**
*
*
* @author Lion Li
*/
@Service
public class PermissionServiceImpl implements PermissionService {
@DubboReference
private RemotePermissionService remotePermissionService;
@Override
public Set<String> getRolePermission(Long userId) {
return remotePermissionService.getRolePermission(userId);
}
@Override
public Set<String> getMenuPermission(Long userId) {
return remotePermissionService.getMenuPermission(userId);
}
}

@ -1 +1,2 @@
org.dromara.common.core.service.impl.DictServiceImpl
org.dromara.common.core.service.impl.PermissionServiceImpl

@ -0,0 +1,32 @@
package org.dromara.system.dubbo;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.service.PermissionService;
import org.dromara.system.service.ISysPermissionService;
import org.springframework.stereotype.Service;
import java.util.Set;
/**
*
*
* @author Lion Li
*/
@RequiredArgsConstructor
@Service
@DubboService
public class RemotePermissionServiceImpl implements PermissionService {
private final ISysPermissionService permissionService;
@Override
public Set<String> getRolePermission(Long userId) {
return permissionService.getRolePermission(userId);
}
@Override
public Set<String> getMenuPermission(Long userId) {
return permissionService.getMenuPermission(userId);
}
}
Loading…
Cancel
Save