From fb183e58e9ffc12a04d410621a2deeb547b9906f Mon Sep 17 00:00:00 2001 From: Deluan Date: Thu, 1 Jul 2021 16:09:49 -0400 Subject: [PATCH] Only encrypts NewPassword if it is not empty, when updating the user details. Fixes #1222 --- persistence/user_repository.go | 4 +++- persistence/user_repository_test.go | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/persistence/user_repository.go b/persistence/user_repository.go index 00eebf13..ca6f9823 100644 --- a/persistence/user_repository.go +++ b/persistence/user_repository.go @@ -63,7 +63,9 @@ func (r *userRepository) Put(u *model.User) error { u.ID = uuid.NewString() } u.UpdatedAt = time.Now() - _ = r.encryptPassword(u) + if u.NewPassword != "" { + _ = r.encryptPassword(u) + } values, _ := toSqlArgs(*u) delete(values, "current_password") update := Update(r.tableName).Where(Eq{"id": u.ID}).SetMap(values) diff --git a/persistence/user_repository_test.go b/persistence/user_repository_test.go index 766f1846..9a2c3c91 100644 --- a/persistence/user_repository_test.go +++ b/persistence/user_repository_test.go @@ -48,6 +48,24 @@ var _ = Describe("UserRepository", func() { Expect(actual.Name).To(Equal("Admin")) Expect(actual.Password).To(Equal("wordpass")) }) + It("updates the name and keep the same password", func() { + usr.Name = "Jane Doe" + usr.NewPassword = "" + Expect(repo.Put(&usr)).To(BeNil()) + + actual, err := repo.FindByUsernameWithPassword("admin") + Expect(err).ToNot(HaveOccurred()) + Expect(actual.Name).To(Equal("Jane Doe")) + Expect(actual.Password).To(Equal("wordpass")) + }) + It("updates password if specified", func() { + usr.NewPassword = "newpass" + Expect(repo.Put(&usr)).To(BeNil()) + + actual, err := repo.FindByUsernameWithPassword("admin") + Expect(err).ToNot(HaveOccurred()) + Expect(actual.Password).To(Equal("newpass")) + }) }) Describe("validatePasswordChange", func() {