From 0e4525716ee171faf47420dd8ba77e52b9e35891 Mon Sep 17 00:00:00 2001 From: Chris Mann Date: Sat, 22 Jul 2023 09:41:09 +0200 Subject: [PATCH] Factoring the model user and correcting password --- model-user.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/model-user.go b/model-user.go index 63a79d2..9fb582b 100644 --- a/model-user.go +++ b/model-user.go @@ -134,11 +134,15 @@ func add(user User, config *ConfigFile, ldapConn *ldap.Conn) error { func modify(user User, config *ConfigFile, ldapConn *ldap.Conn) error { modify_request := ldap.NewModifyRequest(user.DN, nil) - replaceIfContent(modify_request, "displayName", user.DisplayName) - replaceIfContent(modify_request, "givenName", user.GivenName) - replaceIfContent(modify_request, "sn", user.SN) - replaceIfContent(modify_request, "description", user.Description) - err := ldapConn.Modify(modify_request) + previousUser, err := get(user, config, ldapConn) + if err != nil { + return err + } + replaceIfContent(modify_request, "displayName", user.DisplayName, previousUser.DisplayName) + replaceIfContent(modify_request, "givenName", user.GivenName, previousUser.GivenName) + replaceIfContent(modify_request, "sn", user.SN, previousUser.SN) + replaceIfContent(modify_request, "description", user.Description, previousUser.Description) + err = ldapConn.Modify(modify_request) if err != nil { return err } @@ -155,9 +159,11 @@ func bind(user User, config *ConfigFile, ldapConn *ldap.Conn) error { return ldapConn.Bind(user.DN, user.Password) } -func replaceIfContent(modifReq *ldap.ModifyRequest, key string, value string) error { +func replaceIfContent(modifReq *ldap.ModifyRequest, key string, value string, previousValue string) error { if value != "" { modifReq.Replace(key, []string{value}) + } else { + modifReq.Delete(key, []string{value}) } return nil }