Selaa lähdekoodia

😁若账号的角色和组织架构发生变化,则强制账号下线以刷新权限

zuohuaijun 2 vuotta sitten
vanhempi
commit
1798219f43
1 muutettua tiedostoa jossa 7 lisäystä ja 1 poistoa
  1. 7 1
      Admin.NET/Admin.NET.Core/Service/User/SysUserService.cs

+ 7 - 1
Admin.NET/Admin.NET.Core/Service/User/SysUserService.cs

@@ -113,7 +113,8 @@ public class SysUserService : IDynamicApiController, ITransient
     [DisplayName("更新用户")]
     public async Task UpdateUser(UpdateUserInput input)
     {
-        if (await _sysUserRep.AsQueryable().ClearFilter().AnyAsync(u => u.Account == input.Account && u.Id != input.Id))
+        var user = await _sysUserRep.AsQueryable().ClearFilter().FirstAsync(u => u.Account == input.Account && u.Id != input.Id);
+        if (user != null)
             throw Oops.Oh(ErrorCodeEnum.D1003);
 
         await _sysUserRep.AsUpdateable(input.Adapt<SysUser>()).IgnoreColumns(true)
@@ -123,6 +124,11 @@ public class SysUserService : IDynamicApiController, ITransient
 
         // 删除用户机构缓存
         SqlSugarFilter.DeleteUserOrgCache(input.Id, _sysUserRep.Context.CurrentConnectionConfig.ConfigId.ToString());
+
+        // 若账号的角色和组织架构发生变化,则强制账号下线以刷新权限
+        var roleIds = await GetOwnRoleList(input.Id); // 获取权限集合
+        if (input.OrgId != user.OrgId || input.RoleIdList != roleIds)
+            await _sysOnlineUserService.ForceOffline(input.Id);
     }
 
     /// <summary>