From 660b499a222d556fb6404fdddfb6b492a42b42ac Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Thu, 28 Feb 2013 20:15:47 -0600 Subject: Remove user from member groups before deletion --- src/libtdeldap.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/libtdeldap.cpp b/src/libtdeldap.cpp index f9cc4f0..709f81a 100644 --- a/src/libtdeldap.cpp +++ b/src/libtdeldap.cpp @@ -1723,6 +1723,20 @@ int LDAPManager::deleteUserInfo(LDAPUserInfo user, TQString *errstr) { return -1; } else { + // Remove the user from all member groups + LDAPGroupInfoList groupInfoList = groups(&retcode); + LDAPGroupInfoList::Iterator it; + for (it = groupInfoList.begin(); it != groupInfoList.end(); ++it) { + LDAPGroupInfo group = *it; + if (group.userlist.contains(user.distinguishedName)) { + group.userlist.remove(user.distinguishedName); + retcode = updateGroupInfo(group, errstr); + if (retcode != 0) { + return retcode; + } + } + } + // Delete the base DN entry retcode = ldap_delete_ext_s(m_ldap, user.distinguishedName.ascii(), NULL, NULL); if (retcode != LDAP_SUCCESS) { -- cgit v1.2.1