From 2ed4a4da028e290bbdf4c37807ec3e95918c3811 Mon Sep 17 00:00:00 2001 From: Asai Neko Date: Tue, 20 Jan 2026 23:33:50 +0800 Subject: [PATCH] User update check one by one Signed-off-by: Asai Neko --- service/user/update.go | 49 +++++++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/service/user/update.go b/service/user/update.go index 98a79db..95228ac 100644 --- a/service/user/update.go +++ b/service/user/update.go @@ -1,9 +1,11 @@ package user import ( + "net/url" "nixcn-cms/data" "nixcn-cms/internal/cryptography" "nixcn-cms/utils" + "unicode/utf8" "github.com/gin-gonic/gin" "github.com/google/uuid" @@ -42,22 +44,49 @@ func Update(c *gin.Context) { // } // userData.Email = ReqInfo.Email - if len(ReqInfo.Username) < 5 || len(ReqInfo.Username) >= 255 { - utils.HttpResponse(c, 400, "", "invilad user name") - return - } - userData.Username = ReqInfo.Username + // utils.HttpResponse(c, 400, "", "invilad user name") + // return - userData.Nickname = ReqInfo.Nickname - userData.Subtitle = ReqInfo.Subtitle - userData.Avatar = ReqInfo.Avatar + if ReqInfo.Username != "" { + if len(ReqInfo.Username) < 5 || len(ReqInfo.Username) >= 255 { + utils.HttpResponse(c, 400, "", "invalid request") + return + } + userData.Username = ReqInfo.Username + } + + if ReqInfo.Nickname != "" { + if utf8.RuneCountInString(ReqInfo.Nickname) > 24 { + utils.HttpResponse(c, 400, "", "invalid request") + return + } + userData.Nickname = ReqInfo.Nickname + } + + if ReqInfo.Subtitle != "" { + if utf8.RuneCountInString(ReqInfo.Subtitle) > 32 { + utils.HttpResponse(c, 400, "", "invalid request") + return + } + userData.Subtitle = ReqInfo.Subtitle + } + + if ReqInfo.Avatar != "" { + _, err := url.ParseRequestURI(ReqInfo.Avatar) + if err != nil { + utils.HttpResponse(c, 400, "", "invalid request") + return + } + userData.Avatar = ReqInfo.Avatar + } if ReqInfo.Bio != "" { if !cryptography.IsBase64Std(ReqInfo.Bio) { - utils.HttpResponse(c, 400, "", "invalid base64") + utils.HttpResponse(c, 400, "", "invalid request") + return } + userData.Bio = ReqInfo.Bio } - userData.Bio = ReqInfo.Bio // Update user info userData.UpdateByUserID(userId)