diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/filter/DubboDataPermissionFilter.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/filter/DubboDataPermissionFilter.java new file mode 100644 index 00000000..8f920c57 --- /dev/null +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/filter/DubboDataPermissionFilter.java @@ -0,0 +1,28 @@ +package com.ruoyi.common.mybatis.filter; + +import com.ruoyi.common.mybatis.helper.DataPermissionHelper; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.common.constants.CommonConstants; +import org.apache.dubbo.common.extension.Activate; +import org.apache.dubbo.rpc.*; + +import java.util.Map; + +/** + * dubbo 数据权限参数传递 + * + * @author Lion Li + */ +@Slf4j +@Activate(group = {CommonConstants.CONSUMER}) +public class DubboDataPermissionFilter implements Filter { + + @Override + public Result invoke(Invoker invoker, Invocation invocation) throws RpcException { + RpcServiceContext context = RpcContext.getServiceContext(); + Map dataPermissionContext = DataPermissionHelper.getContext(); + context.setObjectAttachment(DataPermissionHelper.DATA_PERMISSION_KEY, dataPermissionContext); + return invoker.invoke(invocation); + } + +} diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter b/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter new file mode 100644 index 00000000..2daf267c --- /dev/null +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter @@ -0,0 +1 @@ +dubboDataPermissionFilter=com.ruoyi.common.mybatis.filter.DubboDataPermissionFilter