Prechádzať zdrojové kódy

修复给普通角色分配账号管理的权限,数据权限只有二级组织架构的权限,却可以通过点击一级主体看到一级主体下所有的账号

wafulo 2 rokov pred
rodič
commit
9c83a99fb9

+ 13 - 2
Admin.NET/Admin.NET.Core/Service/User/SysUserService.cs

@@ -45,8 +45,19 @@ public class SysUserService : IDynamicApiController, ITransient
     [DisplayName("获取用户分页列表")]
     [DisplayName("获取用户分页列表")]
     public async Task<SqlSugarPagedList<SysUser>> Page(PageUserInput input)
     public async Task<SqlSugarPagedList<SysUser>> Page(PageUserInput input)
     {
     {
-        var orgList = input.OrgId > 0 ? await _sysOrgService.GetChildIdListWithSelfById(input.OrgId) :
-            _userManager.SuperAdmin ? null : await _sysOrgService.GetUserOrgIdList(); // 各管理员只能看到自己机构下的用户列表
+        //得到用户可以管理的机构Id集
+        var userCanMangeList = await _sysOrgService.GetUserOrgIdList();
+        List<long> orgList = null;
+        if (input.OrgId > 0)  //指定选择的机构查询时
+        {
+            orgList = await _sysOrgService.GetChildIdListWithSelfById(input.OrgId);
+            orgList = _userManager.SuperAdmin ? orgList : orgList.Where(t => userCanMangeList.Contains(t)).ToList();
+        }
+        else
+        {
+            // 各管理员只能看到自己机构下的用户列表
+            orgList = _userManager.SuperAdmin ? null : userCanMangeList;
+        }
 
 
         return await _sysUserRep.AsQueryable()
         return await _sysUserRep.AsQueryable()
             .Where(u => u.AccountType != AccountTypeEnum.SuperAdmin)
             .Where(u => u.AccountType != AccountTypeEnum.SuperAdmin)