Browse Source

Merge pull request 'fix-282 优化切换主邮箱时检查新的主邮箱是否已被其他用户使用' (#307) from fix-282 into V202108

Reviewed-on: https://git.openi.org.cn/OpenI/aiforge/pulls/307
Reviewed-by: lewis <747342561@qq.com>
tags/v1.21.12.1
lewis 5 years ago
parent
commit
73b05ba1db
2 changed files with 16 additions and 0 deletions
  1. +10
    -0
      models/user_mail.go
  2. +6
    -0
      routers/user/setting/account.go

+ 10
- 0
models/user_mail.go View File

@@ -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
}


+ 6
- 0
routers/user/setting/account.go View File

@@ -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
}


Loading…
Cancel
Save