diff options
Diffstat (limited to 'src/libtdeldap.cpp')
-rw-r--r-- | src/libtdeldap.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
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) { |