mirror of https://gitee.com/answerdev/answer.git
feat(user): check username after check user center config
This commit is contained in:
parent
9d304f0186
commit
cba45d1eaa
|
@ -4,14 +4,12 @@ import (
|
|||
"encoding/json"
|
||||
|
||||
"github.com/answerdev/answer/internal/base/constant"
|
||||
"github.com/answerdev/answer/internal/base/reason"
|
||||
"github.com/answerdev/answer/internal/base/validator"
|
||||
"github.com/answerdev/answer/internal/entity"
|
||||
"github.com/answerdev/answer/pkg/checker"
|
||||
"github.com/answerdev/answer/pkg/converter"
|
||||
"github.com/answerdev/answer/pkg/gravatar"
|
||||
"github.com/jinzhu/copier"
|
||||
"github.com/segmentfault/pacman/errors"
|
||||
)
|
||||
|
||||
// UserVerifyEmailReq user verify email request
|
||||
|
@ -300,7 +298,7 @@ func (u *UserModifyPassWordRequest) Check() (errFields []*validator.FormErrorFie
|
|||
|
||||
type UpdateInfoRequest struct {
|
||||
// display_name
|
||||
DisplayName string `validate:"required,gt=0,lte=30" json:"display_name"`
|
||||
DisplayName string `validate:"omitempty,gt=0,lte=30" json:"display_name"`
|
||||
// username
|
||||
Username string `validate:"omitempty,gt=3,lte=30" json:"username"`
|
||||
// avatar
|
||||
|
@ -329,16 +327,6 @@ func (a *AvatarInfo) ToJsonString() string {
|
|||
}
|
||||
|
||||
func (req *UpdateInfoRequest) Check() (errFields []*validator.FormErrorField, err error) {
|
||||
if len(req.Username) > 0 {
|
||||
if checker.IsInvalidUsername(req.Username) {
|
||||
errField := &validator.FormErrorField{
|
||||
ErrorField: "username",
|
||||
ErrorMsg: reason.UsernameInvalid,
|
||||
}
|
||||
errFields = append(errFields, errField)
|
||||
return errFields, errors.BadRequest(reason.UsernameInvalid)
|
||||
}
|
||||
}
|
||||
req.BioHTML = converter.Markdown2BasicHTML(req.Bio)
|
||||
return nil, nil
|
||||
}
|
||||
|
|
|
@ -259,15 +259,23 @@ func (us *UserService) UpdateInfo(ctx context.Context, req *schema.UpdateInfoReq
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
oldUserInfo, exist, err := us.userRepo.GetByUserID(ctx, req.UserID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
if siteUsers.AllowUpdateUsername && len(req.Username) > 0 {
|
||||
if checker.IsInvalidUsername(req.Username) {
|
||||
errFields = append(errFields, &validator.FormErrorField{
|
||||
ErrorField: "username",
|
||||
ErrorMsg: reason.UsernameInvalid,
|
||||
})
|
||||
return errFields, errors.BadRequest(reason.UsernameInvalid)
|
||||
}
|
||||
if !exist {
|
||||
return nil, errors.BadRequest(reason.UserNotFound)
|
||||
if checker.IsReservedUsername(req.Username) {
|
||||
errFields = append(errFields, &validator.FormErrorField{
|
||||
ErrorField: "username",
|
||||
ErrorMsg: reason.UsernameInvalid,
|
||||
})
|
||||
return errFields, errors.BadRequest(reason.UsernameInvalid)
|
||||
}
|
||||
|
||||
if len(req.Username) > 0 {
|
||||
userInfo, exist, err := us.userRepo.GetByUsername(ctx, req.Username)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -279,13 +287,14 @@ func (us *UserService) UpdateInfo(ctx context.Context, req *schema.UpdateInfoReq
|
|||
})
|
||||
return errFields, errors.BadRequest(reason.UsernameDuplicate)
|
||||
}
|
||||
if checker.IsReservedUsername(req.Username) {
|
||||
errFields = append(errFields, &validator.FormErrorField{
|
||||
ErrorField: "username",
|
||||
ErrorMsg: reason.UsernameInvalid,
|
||||
})
|
||||
return errFields, errors.BadRequest(reason.UsernameInvalid)
|
||||
}
|
||||
|
||||
oldUserInfo, exist, err := us.userRepo.GetByUserID(ctx, req.UserID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !exist {
|
||||
return nil, errors.BadRequest(reason.UserNotFound)
|
||||
}
|
||||
|
||||
cond := us.formatUserInfoForUpdateInfo(oldUserInfo, req, siteUsers)
|
||||
|
@ -307,13 +316,13 @@ func (us *UserService) formatUserInfoForUpdateInfo(
|
|||
userInfo.Location = oldUserInfo.Location
|
||||
userInfo.ID = req.UserID
|
||||
|
||||
if siteUsersConf.AllowUpdateDisplayName {
|
||||
if len(req.DisplayName) > 0 && siteUsersConf.AllowUpdateDisplayName {
|
||||
userInfo.DisplayName = req.DisplayName
|
||||
}
|
||||
if siteUsersConf.AllowUpdateUsername {
|
||||
if len(req.Username) > 0 && siteUsersConf.AllowUpdateUsername {
|
||||
userInfo.Username = req.Username
|
||||
}
|
||||
if siteUsersConf.AllowUpdateAvatar {
|
||||
if len(avatar) > 0 && siteUsersConf.AllowUpdateAvatar {
|
||||
userInfo.Avatar = string(avatar)
|
||||
}
|
||||
if siteUsersConf.AllowUpdateBio {
|
||||
|
|
|
@ -136,7 +136,7 @@ type TranslateFn func(ctx *GinContext) string
|
|||
|
||||
// Translator contains a function that translates the key to the current language of the context
|
||||
type Translator struct {
|
||||
fn TranslateFn
|
||||
Fn TranslateFn
|
||||
}
|
||||
|
||||
// MakeTranslator generates a translator from the key
|
||||
|
@ -144,13 +144,13 @@ func MakeTranslator(key string) Translator {
|
|||
t := func(ctx *GinContext) string {
|
||||
return Translate(ctx, key)
|
||||
}
|
||||
return Translator{fn: t}
|
||||
return Translator{Fn: t}
|
||||
}
|
||||
|
||||
// Translate translates the key to the current language of the context
|
||||
func (t Translator) Translate(ctx *GinContext) string {
|
||||
if &t == nil || t.fn == nil {
|
||||
if &t == nil || t.Fn == nil {
|
||||
return ""
|
||||
}
|
||||
return t.fn(ctx)
|
||||
return t.Fn(ctx)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue