From 1c57a9b2a565396eecbe0eea3117a2f6c39f861b Mon Sep 17 00:00:00 2001 From: Jamie Curnow Date: Mon, 29 May 2023 14:51:42 +1000 Subject: [PATCH] Prevent adding another user with the same email --- backend/internal/entity/user/model.go | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/backend/internal/entity/user/model.go b/backend/internal/entity/user/model.go index 39c956e0..1d83497c 100644 --- a/backend/internal/entity/user/model.go +++ b/backend/internal/entity/user/model.go @@ -61,19 +61,6 @@ func (m *Model) LoadByEmail(email string) error { return result.Error } -/* -// Touch will update model's timestamp(s) -func (m *Model) Touch(created bool) { - var d types.DBDate - d.Time = time.Now() - if created { - m.CreatedOn = d - } - m.ModifiedOn = d - m.generateGravatar() -} -*/ - // Save will save this model to the DB func (m *Model) Save() error { // Ensure email is nice @@ -82,8 +69,12 @@ func (m *Model) Save() error { return errors.ErrSystemUserReadonly } + // Check if an existing user with this email exists + if m2, err := GetByEmail(m.Email); err == nil && m.ID != m2.ID { + return errors.ErrDuplicateEmailUser + } + db := database.GetDB() - // todo: touch? not sure that save does this or not? result := db.Save(m) return result.Error }