Browse Source

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
Achilleas Koutsou 5 years ago
parent
commit
873966aa86
1 changed files with 5 additions and 2 deletions
  1. 5 2
      internal/route/user/setting.go

+ 5 - 2
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
 	}