fix #389 : remove member when deleting user
This commit is contained in:
parent
43e5eaaf3d
commit
376738a6a6
1 changed files with 28 additions and 1 deletions
|
@ -328,9 +328,36 @@ public class LdapManager {
|
|||
}
|
||||
|
||||
final Supplier<Hashtable<String, String>> adminEnv = () -> createAdminEnv();
|
||||
final String userDN = fessConfig.getLdapAdminUserSecurityPrincipal(user.getName());
|
||||
|
||||
StreamUtil.of(user.getGroupNames()).forEach(name -> {
|
||||
search(fessConfig.getLdapAdminGroupBaseDn(), fessConfig.getLdapAdminGroupFilter(name), null, adminEnv, subResult -> {
|
||||
if (!subResult.hasMore()) {
|
||||
final Group group = new Group();
|
||||
group.setName(name);
|
||||
insert(group);
|
||||
}
|
||||
final List<ModificationItem> modifyList = new ArrayList<>();
|
||||
modifyDeleteEntry(modifyList, "member", userDN);
|
||||
modify(fessConfig.getLdapAdminGroupSecurityPrincipal(name), modifyList, adminEnv);
|
||||
});
|
||||
});
|
||||
StreamUtil.of(user.getRoleNames()).forEach(name -> {
|
||||
search(fessConfig.getLdapAdminRoleBaseDn(), fessConfig.getLdapAdminRoleFilter(name), null, adminEnv, subResult -> {
|
||||
if (!subResult.hasMore()) {
|
||||
final Role role = new Role();
|
||||
role.setName(name);
|
||||
insert(role);
|
||||
}
|
||||
final List<ModificationItem> modifyList = new ArrayList<>();
|
||||
modifyDeleteEntry(modifyList, "member", userDN);
|
||||
modify(fessConfig.getLdapAdminRoleSecurityPrincipal(name), modifyList, adminEnv);
|
||||
});
|
||||
});
|
||||
|
||||
search(fessConfig.getLdapAdminUserBaseDn(), fessConfig.getLdapAdminUserFilter(user.getName()), null, adminEnv, result -> {
|
||||
if (result.hasMore()) {
|
||||
delete(fessConfig.getLdapAdminUserSecurityPrincipal(user.getName()), adminEnv);
|
||||
delete(userDN, adminEnv);
|
||||
} else {
|
||||
logger.info("{} does not exist in LDAP server.", user.getName());
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue