Sfoglia il codice sorgente

非管理员可以管理自己所拥有的角色的权限

徐少年 1 anno fa
parent
commit
3e9d1a71bb
1 ha cambiato i file con 3 aggiunte e 1 eliminazioni
  1. 3 1
      Admin.NET/Admin.NET.Core/Service/Role/SysRoleService.cs

+ 3 - 1
Admin.NET/Admin.NET.Core/Service/Role/SysRoleService.cs

@@ -42,9 +42,11 @@ public class SysRoleService : IDynamicApiController, ITransient
     [DisplayName("获取角色分页列表")]
     public async Task<SqlSugarPagedList<SysRole>> Page(PageRoleInput input)
     {
+        // 当前用户已拥有的角色集合
+        var roleIdList = _userManager.SuperAdmin ? new List<long>() : await _sysUserRoleService.GetUserRoleIdList(_userManager.UserId);
         return await _sysRoleRep.AsQueryable()
             .WhereIF(!_userManager.SuperAdmin, u => u.TenantId == _userManager.TenantId) // 若非超管,则只能操作本租户的角色
-            .WhereIF(!_userManager.SuperAdmin && !_userManager.SysAdmin, u => u.CreateUserId == _userManager.UserId) // 若非超管且非系统管理员,则只能操作自己创建的角色
+            .WhereIF(!_userManager.SuperAdmin && !_userManager.SysAdmin, u => u.CreateUserId == _userManager.UserId || roleIdList.Contains(u.Id)) // 若非超管且非系统管理员,则只能操作自己创建的角色|自己拥有的角色
             .WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Code), u => u.Code.Contains(input.Code))
             .OrderBy(u => new { u.OrderNo, u.Id })