浏览代码

fix: check user's role when manage user

JustSong 2 年之前
父节点
当前提交
b291ed43ca
共有 1 个文件被更改,包括 35 次插入0 次删除
  1. 35 0
      controller/user.go

+ 35 - 0
controller/user.go

@@ -600,6 +600,13 @@ func ManageUser(c *gin.Context) {
 			})
 			return
 		}
+		if user.Role == common.RoleRootUser {
+			c.JSON(http.StatusOK, gin.H{
+				"success": false,
+				"message": "无法禁用超级管理员用户",
+			})
+			return
+		}
 		channel.TokenStoreRemoveUser(&user)
 		user.Status = common.UserStatusDisabled
 	case "enable":
@@ -613,6 +620,13 @@ func ManageUser(c *gin.Context) {
 		channel.TokenStoreAddUser(&user)
 		user.Status = common.UserStatusEnabled
 	case "delete":
+		if user.Role == common.RoleRootUser {
+			c.JSON(http.StatusOK, gin.H{
+				"success": false,
+				"message": "无法删除超级管理员用户",
+			})
+			return
+		}
 		if err := user.Delete(); err != nil {
 			c.JSON(http.StatusOK, gin.H{
 				"success": false,
@@ -628,8 +642,29 @@ func ManageUser(c *gin.Context) {
 			})
 			return
 		}
+		if user.Role >= common.RoleAdminUser {
+			c.JSON(http.StatusOK, gin.H{
+				"success": false,
+				"message": "该用户已经是管理员",
+			})
+			return
+		}
 		user.Role = common.RoleAdminUser
 	case "demote":
+		if user.Role == common.RoleRootUser {
+			c.JSON(http.StatusOK, gin.H{
+				"success": false,
+				"message": "无法降级超级管理员用户",
+			})
+			return
+		}
+		if user.Role == common.RoleCommonUser {
+			c.JSON(http.StatusOK, gin.H{
+				"success": false,
+				"message": "该用户已经是普通用户",
+			})
+			return
+		}
 		user.Role = common.RoleCommonUser
 	case "allow_send_email_to_others":
 		user.SendEmailToOthers = common.SendEmailToOthersAllowed