user/setting: check for IsErrEmailAlreadyUsed when updating user (#5900)

Check for email collisions when updating the entire user information,
not when the username is being changed.

Fixes #5899
This commit is contained in:
Achilleas Koutsou 2020-01-22 19:05:31 +01:00 committed by ᴜɴᴋɴᴡᴏɴ
parent 6bd08a0b6f
commit 873966aa86

View File

@ -75,8 +75,6 @@ func SettingsPost(c *context.Context, f form.UpdateProfile) {
switch {
case db.IsErrUserAlreadyExist(err):
msg = c.Tr("form.username_been_taken")
case db.IsErrEmailAlreadyUsed(err):
msg = c.Tr("form.email_been_used")
case db.IsErrNameReserved(err):
msg = c.Tr("form.name_reserved")
case db.IsErrNamePatternNotAllowed(err):
@ -103,6 +101,11 @@ func SettingsPost(c *context.Context, f form.UpdateProfile) {
c.User.Website = f.Website
c.User.Location = f.Location
if err := db.UpdateUser(c.User); err != nil {
if db.IsErrEmailAlreadyUsed(err) {
msg := c.Tr("form.email_been_used")
c.RenderWithErr(msg, SETTINGS_PROFILE, &f)
return
}
c.ServerError("UpdateUser", err)
return
}