mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-06-17 11:59:30 +00:00
Fix database inconsistent when admin change user email (#17549)
This commit is contained in:
parent
f23851f690
commit
371ebce252
6 changed files with 62 additions and 15 deletions
|
@ -9,6 +9,7 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"code.gitea.io/gitea/models"
|
||||
"code.gitea.io/gitea/models/db"
|
||||
|
@ -203,12 +204,21 @@ func EditUser(ctx *context.APIContext) {
|
|||
if form.FullName != nil {
|
||||
u.FullName = *form.FullName
|
||||
}
|
||||
var emailChanged bool
|
||||
if form.Email != nil {
|
||||
u.Email = *form.Email
|
||||
if len(u.Email) == 0 {
|
||||
email := strings.TrimSpace(*form.Email)
|
||||
if len(email) == 0 {
|
||||
ctx.Error(http.StatusUnprocessableEntity, "", fmt.Errorf("email is not allowed to be empty string"))
|
||||
return
|
||||
}
|
||||
|
||||
if err := user_model.ValidateEmail(email); err != nil {
|
||||
ctx.InternalServerError(err)
|
||||
return
|
||||
}
|
||||
|
||||
emailChanged = !strings.EqualFold(u.Email, email)
|
||||
u.Email = email
|
||||
}
|
||||
if form.Website != nil {
|
||||
u.Website = *form.Website
|
||||
|
@ -247,7 +257,7 @@ func EditUser(ctx *context.APIContext) {
|
|||
u.IsRestricted = *form.Restricted
|
||||
}
|
||||
|
||||
if err := user_model.UpdateUser(u); err != nil {
|
||||
if err := user_model.UpdateUser(u, emailChanged); err != nil {
|
||||
if user_model.IsErrEmailAlreadyUsed(err) || user_model.IsErrEmailInvalid(err) {
|
||||
ctx.Error(http.StatusUnprocessableEntity, "", err)
|
||||
} else {
|
||||
|
|
|
@ -74,7 +74,7 @@ func UpdateUserSettings(ctx *context.APIContext) {
|
|||
ctx.User.KeepActivityPrivate = *form.HideActivity
|
||||
}
|
||||
|
||||
if err := user_model.UpdateUser(ctx.User); err != nil {
|
||||
if err := user_model.UpdateUser(ctx.User, false); err != nil {
|
||||
ctx.InternalServerError(err)
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue