From 873966aa869f6934619f4643d6f672155d8b19dd Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Wed, 22 Jan 2020 19:05:31 +0100 Subject: [PATCH] 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 --- internal/route/user/setting.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/internal/route/user/setting.go b/internal/route/user/setting.go index 6b55966f1..7c1c46966 100644 --- a/internal/route/user/setting.go +++ b/internal/route/user/setting.go @@ -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 }