summaryrefslogtreecommitdiffstats
path: root/src/libtdeldap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libtdeldap.cpp')
-rw-r--r--src/libtdeldap.cpp14
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) {