Browse Source

fix: 租户管理员的部门/用户/角色数据过滤

yang kai 2 năm trước cách đây
mục cha
commit
dfe09bb60d

+ 3 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java

@@ -41,6 +41,9 @@ public class SysDeptController extends BaseController
     @GetMapping("/list")
     public AjaxResult list(SysDept dept)
     {
+        if (getLoginUser().isTenantAdmin()) {
+            dept.setTenantId(getTenantId());
+        }
         List<SysDept> depts = deptService.selectDeptList(dept);
         return success(depts);
     }

+ 3 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java

@@ -60,7 +60,9 @@ public class SysRoleController extends BaseController
     public TableDataInfo list(SysRole role)
     {
         startPage();
-        role.setTenantId(getTenantId());
+        if (getLoginUser().isTenantAdmin()) {
+            role.setTenantId(getTenantId());
+        }
         List<SysRole> list = roleService.selectRoleList(role);
         return getDataTable(list);
     }

+ 6 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -61,6 +61,9 @@ public class SysUserController extends BaseController
     public TableDataInfo list(SysUser user)
     {
         startPage();
+        if (getLoginUser().isTenantAdmin()) {
+            user.setTenantId(getTenantId());
+        }
         List<SysUser> list = userService.selectUserList(user);
         return getDataTable(list);
     }
@@ -250,6 +253,9 @@ public class SysUserController extends BaseController
     @GetMapping("/deptTree")
     public AjaxResult deptTree(SysDept dept)
     {
+        if (getLoginUser().isTenantAdmin()) {
+            dept.setTenantId(getTenantId());
+        }
         return success(deptService.selectDeptTreeList(dept));
     }
 }

+ 1 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java

@@ -205,4 +205,5 @@ public class BaseController
      * @return
      */
     public Long getTenantId() { return getLoginUser().getTenantId(); }
+
 }

+ 8 - 6
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java

@@ -70,14 +70,16 @@ public class DataScopeAspect
         {
             SysUser currentUser = loginUser.getUser();
             System.out.println("currentUser isTenantAdmin: " + currentUser.isTenantAdmin());
-            if (StringUtils.isNotNull(currentUser) && currentUser.isAdmin())
+            if (StringUtils.isNotNull(currentUser) && (currentUser.isAdmin() || currentUser.isTenantAdmin()))
             {
                 // 如果是超级管理员,则不过滤数据
-            } else if (StringUtils.isNotNull(currentUser) && currentUser.isTenantAdmin()) {
-                // 如果是租户管理员,根据租户ID过滤数据
-                tenantAdminDataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
-                        controllerDataScope.userAlias());
-            } else {
+            }
+//            else if (StringUtils.isNotNull(currentUser) && currentUser.isTenantAdmin()) {
+//                // 如果是租户管理员,根据租户ID过滤数据
+//                tenantAdminDataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
+//                        controllerDataScope.userAlias());
+//            }
+            else {
                 // 根据数据权限过滤数据
                 String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), PermissionContextHolder.getContext());
                 dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),

+ 3 - 0
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml

@@ -43,6 +43,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<if test="status != null and status != ''">
 			AND status = #{status}
 		</if>
+		<if test="tenantId != null and tenantId != 0">
+			AND tenant_id = #{tenantId}
+		</if>
 		<!-- 数据范围过滤 -->
 		${params.dataScope}
 		order by d.parent_id, d.order_num

+ 3 - 0
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -93,6 +93,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<if test="deptId != null and deptId != 0">
 			AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
 		</if>
+		<if test="tenantId != null and tenantId != 0">
+			AND u.tenant_id = #{tenantId}
+		</if>
 		<!-- 数据范围过滤 -->
 		${params.dataScope}
 	</select>