浏览代码

优化BI移除管理员限制

Li 3 年之前
父节点
当前提交
684fdbf071
共有 1 个文件被更改,包括 27 次插入13 次删除
  1. 27 13
      TEAMModelBI/Controllers/DingDingStruc/TableDingDingInfoController.cs

+ 27 - 13
TEAMModelBI/Controllers/DingDingStruc/TableDingDingInfoController.cs

@@ -801,21 +801,35 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                 }
                 else
                 {
-                    foreach (var user in tempUser)
+                    var userInfos = await table.FindListByDict<DingDingUserInfo>(new Dictionary<string, object> { { "PartitionKey", $"{partitionKey}" } });
+
+                    var adminInfos = userInfos.FindAll(x => x.roles.Contains("admin"));
+                    if (adminInfos.Count == 1)
+                    {
+                        return Ok(new { state = 403, msg = "已经是最后一个管理员了" });
+                    }
+                    else
                     {
-                        List<string> tempRoles = new(user.roles.Split(","));                        
-                        if (tempRoles.Contains("admin")) 
+                        foreach (var user in tempUser)
                         {
-                            tempRoles.Remove("admin");
-                        }
-                        user.roles = string.Join(",", tempRoles);
-                        
-                        DingDingUserInfo respUser = await table.SaveOrUpdate<DingDingUserInfo>(user);
+                            if (!user.RowKey.Equals($"{rowKey}"))
+                            {
+                                List<string> tempRoles = new(user.roles.Split(","));
+                                if (tempRoles.Contains("admin"))
+                                {
+                                    tempRoles.Remove("admin");
+                                }
+                                user.roles = string.Join(",", tempRoles);
 
-                        if (respUser != null)
-                        {
-                            roles = !string.IsNullOrEmpty($"{respUser.roles}") ? new List<string>(respUser.roles.Split(",")) : new List<string>();
-                            msg.Append($"取消{respUser.name}【{respUser.RowKey}】账号的BI管理员");
+                                DingDingUserInfo respUser = await table.SaveOrUpdate<DingDingUserInfo>(user);
+
+                                if (respUser != null)
+                                {
+                                    roles = !string.IsNullOrEmpty($"{respUser.roles}") ? new List<string>(respUser.roles.Split(",")) : new List<string>();
+                                    msg.Append($"取消{respUser.name}【{respUser.RowKey}】账号的BI管理员");
+                                }
+                            }
+                            else return Ok(new { state = 1, msg = "不能删除自己" });
                         }
                     }
                 }
@@ -1115,7 +1129,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                                 tmdMobile = "",
                                 mail = "",
                                 picture = "",
-                                roles = "assist",
+                                roles = "",
                                 joinTime = 0,
                                 permissions = "areadata-read,areadata-upd,schooldata-read,schooldata-upd",
                                 schoolIds = ""