From d83f208cf37872cdfe997371cea4127bc23b971e Mon Sep 17 00:00:00 2001 From: zijiren233 Date: Mon, 16 Oct 2023 15:58:34 +0800 Subject: [PATCH] Feat: chinese name support --- server/model/room.go | 20 ++++++++++++++------ server/model/user.go | 2 ++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/server/model/room.go b/server/model/room.go index 0363e68..9791324 100644 --- a/server/model/room.go +++ b/server/model/room.go @@ -14,8 +14,9 @@ var ( ErrRoomIdTooLong = errors.New("room id too long") ErrRoomIdHasInvalidChar = errors.New("room id has invalid char") - ErrEmptyPassword = errors.New("empty password") - ErrPasswordTooLong = errors.New("password too long") + ErrEmptyPassword = errors.New("empty password") + ErrPasswordTooLong = errors.New("password too long") + ErrPasswordHasInvalidChar = errors.New("password has invalid char") ErrEmptyUsername = errors.New("empty username") ErrUsernameTooLong = errors.New("username too long") @@ -23,7 +24,8 @@ var ( ) var ( - alphaNumReg = regexp.MustCompile(`^[a-zA-Z0-9_-]+$`) + alphaNumReg = regexp.MustCompile(`^[a-zA-Z0-9_\-]+$`) + alphaNumChineseReg = regexp.MustCompile(`^[\p{Han}a-zA-Z0-9_\-]+$`) ) type CreateRoomReq struct { @@ -43,19 +45,21 @@ func (c *CreateRoomReq) Validate() error { return ErrEmptyRoomId } else if len(c.RoomId) > 32 { return ErrRoomIdTooLong - } else if !alphaNumReg.MatchString(c.RoomId) { + } else if !alphaNumChineseReg.MatchString(c.RoomId) { return ErrRoomIdHasInvalidChar } if len(c.Password) > 32 { return ErrPasswordTooLong + } else if !alphaNumReg.MatchString(c.Password) { + return ErrPasswordHasInvalidChar } if c.Username == "" { return ErrEmptyUsername } else if len(c.Username) > 32 { return ErrUsernameTooLong - } else if !alphaNumReg.MatchString(c.Username) { + } else if !alphaNumChineseReg.MatchString(c.Username) { return ErrUsernameHasInvalidChar } @@ -63,6 +67,8 @@ func (c *CreateRoomReq) Validate() error { return ErrEmptyPassword } else if len(c.UserPassword) > 32 { return ErrPasswordTooLong + } else if !alphaNumReg.MatchString(c.UserPassword) { + return ErrPasswordHasInvalidChar } return nil @@ -114,6 +120,8 @@ func (s *SetRoomPasswordReq) Decode(ctx *gin.Context) error { func (s *SetRoomPasswordReq) Validate() error { if len(s.Password) > 32 { return ErrPasswordTooLong + } else if !alphaNumReg.MatchString(s.Password) { + return ErrPasswordHasInvalidChar } return nil } @@ -131,7 +139,7 @@ func (u *UsernameReq) Validate() error { return ErrEmptyUsername } else if len(u.Username) > 32 { return ErrUsernameTooLong - } else if !alphaNumReg.MatchString(u.Username) { + } else if !alphaNumChineseReg.MatchString(u.Username) { return ErrUsernameHasInvalidChar } return nil diff --git a/server/model/user.go b/server/model/user.go index d4cb26b..ae7a818 100644 --- a/server/model/user.go +++ b/server/model/user.go @@ -18,6 +18,8 @@ func (s *SetUserPasswordReq) Validate() error { return ErrEmptyPassword } else if len(s.Password) > 32 { return ErrPasswordTooLong + } else if !alphaNumReg.MatchString(s.Password) { + return ErrPasswordHasInvalidChar } return nil }