From c842af38558c6a8370546f563fa5b53111241e70 Mon Sep 17 00:00:00 2001 From: nyne Date: Thu, 12 Jun 2025 10:49:02 +0800 Subject: [PATCH] Restrict usernames from containing spaces --- server/service/user.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/server/service/user.go b/server/service/user.go index 6b7a931..8312cba 100644 --- a/server/service/user.go +++ b/server/service/user.go @@ -11,6 +11,7 @@ import ( "nysoure/server/utils" "os" "strconv" + "strings" "sync" "time" @@ -69,6 +70,9 @@ func CreateUser(username, password, cfToken string) (model.UserViewWithToken, er if usernameLen < 3 || usernameLen > 20 { return model.UserViewWithToken{}, model.NewRequestError("Username must be between 3 and 20 characters") } + if strings.Contains(username, " ") { + return model.UserViewWithToken{}, model.NewRequestError("Username cannot contain spaces") + } if len(password) < 6 || len(password) > 20 { return model.UserViewWithToken{}, model.NewRequestError("Password must be between 6 and 20 characters") } @@ -327,9 +331,14 @@ func GetUserByUsername(username string) (model.UserView, error) { } func ChangeUsername(uid uint, newUsername string) (model.UserView, error) { - if len(newUsername) < 3 || len(newUsername) > 20 { + usernameLen := len([]rune(newUsername)) + if usernameLen < 3 || usernameLen > 20 { return model.UserView{}, model.NewRequestError("Username must be between 3 and 20 characters") } + if strings.Contains(newUsername, " ") { + return model.UserView{}, model.NewRequestError("Username cannot contain spaces") + } + user, err := dao.GetUserByID(uid) if err != nil { return model.UserView{}, err