From 0e87a7d13548190dcbe68d0360fc98bf92d916c3 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Tue, 24 Aug 2021 10:56:33 +0800 Subject: [PATCH 1/2] =?UTF-8?q?#282=E4=BC=98=E5=8C=96=EF=BC=8C=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E4=B8=BB=E9=82=AE=E7=AE=B1=E6=97=B6=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E8=A2=AB=E5=88=AB=E7=9A=84=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E4=BA=86=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/user_mail.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/models/user_mail.go b/models/user_mail.go index 7244ec378..8bf74b81b 100755 --- a/models/user_mail.go +++ b/models/user_mail.go @@ -293,6 +293,16 @@ func MakeEmailPrimary(email *EmailAddress) error { } user.Email = email.Email + + has, err = sess.Where("id!=?", user.ID). + And("type=?", user.Type). + And("email=?", strings.ToLower(user.Email)). + Get(new(User)) + if err != nil { + return err + } else if has { + return ErrEmailAlreadyUsed{user.Email} + } if _, err = sess.ID(user.ID).Cols("email").Update(user); err != nil { return err } From 8383329b151e4bf70932fe70faa86b05571e53c0 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Tue, 24 Aug 2021 11:15:31 +0800 Subject: [PATCH 2/2] #282 --- routers/user/setting/account.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/routers/user/setting/account.go b/routers/user/setting/account.go index 27f0bf1c8..6165bfc5b 100644 --- a/routers/user/setting/account.go +++ b/routers/user/setting/account.go @@ -80,6 +80,12 @@ func EmailPost(ctx *context.Context, form auth.AddEmailForm) { // Make emailaddress primary. if ctx.Query("_method") == "PRIMARY" { if err := models.MakeEmailPrimary(&models.EmailAddress{ID: ctx.QueryInt64("id")}); err != nil { + if _, ok := err.(models.ErrEmailAlreadyUsed); ok { + ctx.Flash.Error(ctx.Tr("form.email_been_used")) + ctx.Redirect(setting.AppSubURL + "/user/settings/account") + return + } + ctx.ServerError("MakeEmailPrimary", err) return }