Ver Fonte

check the json string before unmarshal

huangrf há 6 anos atrás
pai
commit
fe0f71a815
1 ficheiros alterados com 13 adições e 7 exclusões
  1. 13 7
      controllers/SystemController.go

+ 13 - 7
controllers/SystemController.go

@@ -390,12 +390,16 @@ func System_UpdateUser(c *SystemController) {
 	user_id := c.Ctx.GetString("user_id")
 
 	var userInfo sysmodel.UserInfo
-	c.Ctx.BindJSON(&userInfo)
+	err := c.Ctx.BindJSON(&userInfo)
+	if err != nil{
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+		return;
+	}
 
 	session := c.Db.NewSession()
 	defer session.Close()
 	//1、删除用户角色
-	_, err := c.Db.SQL(sysmodel.SqlDeleteUserRoles, userInfo.Id).Execute()
+	_, err = c.Db.SQL(sysmodel.SqlDeleteUserRoles, userInfo.Id).Execute()
 	if err != nil {
 		session.Rollback()
 		c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
@@ -404,11 +408,13 @@ func System_UpdateUser(c *SystemController) {
 
 	//2、修改角色
 	userRoles := []models.SysUserRole{}
-	err = json.Unmarshal([]byte(userInfo.UserRole), &userRoles)
-	if err != nil {
-		session.Rollback()
-		c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
-		return
+	if userInfo.UserRole != "" {
+		err = json.Unmarshal([]byte(userInfo.UserRole), &userRoles)
+		if err != nil {
+			session.Rollback()
+			c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
+			return
+		}
 	}
 
 	for i, _ := range userRoles {