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