From 2f4b57e57fd4749518e7e19438cfccb0e7fb4c34 Mon Sep 17 00:00:00 2001 From: LinkinStar Date: Mon, 28 Nov 2022 16:34:21 +0800 Subject: [PATCH] fix: prompt form error when user enters email repeatedly --- internal/base/handler/lang.go | 11 +++++++++++ internal/controller/user_controller.go | 3 --- internal/service/user_service.go | 9 +++++---- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/internal/base/handler/lang.go b/internal/base/handler/lang.go index a6b2122c..4f4a0763 100644 --- a/internal/base/handler/lang.go +++ b/internal/base/handler/lang.go @@ -1,6 +1,8 @@ package handler import ( + "context" + "github.com/answerdev/answer/internal/base/constant" "github.com/gin-gonic/gin" "github.com/segmentfault/pacman/i18n" @@ -18,3 +20,12 @@ func GetLang(ctx *gin.Context) i18n.Language { return i18n.DefaultLang } } + +// GetLangByCtx get language from header +func GetLangByCtx(ctx context.Context) i18n.Language { + acceptLanguage, ok := ctx.Value(constant.AcceptLanguageFlag).(i18n.Language) + if ok { + return acceptLanguage + } + return i18n.DefaultLang +} diff --git a/internal/controller/user_controller.go b/internal/controller/user_controller.go index dfafba07..099adc42 100644 --- a/internal/controller/user_controller.go +++ b/internal/controller/user_controller.go @@ -441,9 +441,6 @@ func (uc *UserController) UserChangeEmailSendCode(ctx *gin.Context) { _, _ = uc.actionService.ActionRecordAdd(ctx, schema.ActionRecordTypeEmail, ctx.ClientIP()) resp, err := uc.userService.UserChangeEmailSendCode(ctx, req) if err != nil { - if resp != nil { - resp.ErrorMsg = translator.GlobalTrans.Tr(handler.GetLang(ctx), resp.ErrorMsg) - } handler.HandleResponse(ctx, err, resp) return } diff --git a/internal/service/user_service.go b/internal/service/user_service.go index 8d50bfec..3466170e 100644 --- a/internal/service/user_service.go +++ b/internal/service/user_service.go @@ -10,6 +10,7 @@ import ( "strings" "github.com/Chain-Zhang/pinyin" + "github.com/answerdev/answer/internal/base/handler" "github.com/answerdev/answer/internal/base/reason" "github.com/answerdev/answer/internal/base/translator" "github.com/answerdev/answer/internal/base/validator" @@ -486,7 +487,7 @@ func (us *UserService) encryptPassword(ctx context.Context, Pass string) (string // UserChangeEmailSendCode user change email verification func (us *UserService) UserChangeEmailSendCode(ctx context.Context, req *schema.UserChangeEmailSendCodeReq) ( - resp *validator.FormErrorField, err error) { + resp []*validator.FormErrorField, err error) { userInfo, exist, err := us.userRepo.GetByUserID(ctx, req.UserID) if err != nil { return nil, err @@ -500,10 +501,10 @@ func (us *UserService) UserChangeEmailSendCode(ctx context.Context, req *schema. return nil, err } if exist { - resp = &validator.FormErrorField{ + resp = append([]*validator.FormErrorField{}, &validator.FormErrorField{ ErrorField: "e_mail", - ErrorMsg: reason.EmailDuplicate, - } + ErrorMsg: translator.GlobalTrans.Tr(handler.GetLangByCtx(ctx), reason.EmailDuplicate), + }) return resp, errors.BadRequest(reason.EmailDuplicate) }