Merge remote-tracking branch 'origin/feat/1.2.0/img' into test

This commit is contained in:
LinkinStars 2023-09-21 10:54:22 +08:00
commit be821faf08
3 changed files with 23 additions and 26 deletions

View File

@ -421,6 +421,7 @@ func (uc *UserController) UserUpdateInfo(ctx *gin.Context) {
return
}
req.UserID = middleware.GetLoginUserIDFromContext(ctx)
req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
errFields, err := uc.userService.UpdateInfo(ctx, req)
for _, field := range errFields {
field.ErrorMsg = translator.Tr(handler.GetLang(ctx), field.ErrorMsg)

View File

@ -208,22 +208,15 @@ func (u *UserModifyPasswordReq) Check() (errFields []*validator.FormErrorField,
}
type UpdateInfoRequest struct {
// 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
Avatar AvatarInfo `json:"avatar"`
// bio
Bio string `validate:"omitempty,gt=0,lte=4096" json:"bio"`
// bio
BioHTML string `json:"-"`
// website
Website string `validate:"omitempty,gt=0,lte=500" json:"website"`
// location
Location string `validate:"omitempty,gt=0,lte=100" json:"location"`
// user id
UserID string `json:"-"`
DisplayName string `validate:"omitempty,gt=0,lte=30" json:"display_name"`
Username string `validate:"omitempty,gt=3,lte=30" json:"username"`
Avatar AvatarInfo `json:"avatar"`
Bio string `validate:"omitempty,gt=0,lte=4096" json:"bio"`
BioHTML string `json:"-"`
Website string `validate:"omitempty,gt=0,lte=500" json:"website"`
Location string `validate:"omitempty,gt=0,lte=100" json:"location"`
UserID string `json:"-"`
IsAdmin bool `json:"-"`
}
type AvatarInfo struct {

View File

@ -274,18 +274,22 @@ func (us *UserService) UpdateInfo(ctx context.Context, req *schema.UpdateInfoReq
if siteUsers.AllowUpdateUsername && len(req.Username) > 0 {
if checker.IsInvalidUsername(req.Username) {
errFields = append(errFields, &validator.FormErrorField{
return append(errFields, &validator.FormErrorField{
ErrorField: "username",
ErrorMsg: reason.UsernameInvalid,
})
return errFields, errors.BadRequest(reason.UsernameInvalid)
}), errors.BadRequest(reason.UsernameInvalid)
}
if checker.IsReservedUsername(req.Username) {
errFields = append(errFields, &validator.FormErrorField{
// admin can use reserved username
if !req.IsAdmin && checker.IsReservedUsername(req.Username) {
return append(errFields, &validator.FormErrorField{
ErrorField: "username",
ErrorMsg: reason.UsernameInvalid,
})
return errFields, errors.BadRequest(reason.UsernameInvalid)
}), errors.BadRequest(reason.UsernameInvalid)
} else if req.IsAdmin && checker.IsUsersIgnorePath(req.Username) {
return append(errFields, &validator.FormErrorField{
ErrorField: "username",
ErrorMsg: reason.UsernameInvalid,
}), errors.BadRequest(reason.UsernameInvalid)
}
userInfo, exist, err := us.userRepo.GetByUsername(ctx, req.Username)
@ -293,11 +297,10 @@ func (us *UserService) UpdateInfo(ctx context.Context, req *schema.UpdateInfoReq
return nil, err
}
if exist && userInfo.ID != req.UserID {
errFields = append(errFields, &validator.FormErrorField{
return append(errFields, &validator.FormErrorField{
ErrorField: "username",
ErrorMsg: reason.UsernameDuplicate,
})
return errFields, errors.BadRequest(reason.UsernameDuplicate)
}), errors.BadRequest(reason.UsernameDuplicate)
}
}