瀏覽代碼

update 优化 数据权限支持通过菜单标识符获取数据所有权

疯狂的狮子Li 9 月之前
父節點
當前提交
ab147df2f1

+ 7 - 0
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataColumn.java

@@ -30,4 +30,11 @@ public @interface DataColumn {
      */
     String[] value() default "dept_id";
 
+    /**
+     * 权限标识符 用于通过菜单权限标识符来获取数据权限
+     * 拥有此标识符的角色 将不会拼接此角色的数据过滤sql
+     *
+     * @return 权限标识符
+     */
+    String permission() default "";
 }

+ 6 - 0
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java

@@ -158,6 +158,12 @@ public class PlusDataPermissionHandler {
                 )) {
                     continue;
                 }
+                // 包含权限标识符 这直接跳过
+                if (StringUtils.isNotBlank(dataColumn.permission()) &&
+                    CollUtil.contains(user.getMenuPermission(), dataColumn.permission())
+                ) {
+                    continue;
+                }
                 // 设置注解变量 key 为表达式变量 value 为变量值
                 for (int i = 0; i < dataColumn.key().length; i++) {
                     context.setVariable(dataColumn.key()[i], dataColumn.value()[i]);