diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java index 5fba2874f6286923fc87506a80b317eaee08251a..1e91297205c6046ac94edf4f7203cb196c44ffcf 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java @@ -98,9 +98,9 @@ public class GroupServlet extends HttpServlet { // if the username sent isn't already part of the group members, then we add it if (!targetGroup.getGroupMembers().contains(groupMembers)) { - // otherwise remove the group from the user's memberships. AddUserToGroupFlow.addUserToGroup(name, req.getParameter("groupMembers")); } else { + // otherwise remove the group from the user's memberships. statementList = new StatementList(); st = new StatementElement("username", "=", groupMembers, ""); statementList.addStatement(st); @@ -169,10 +169,37 @@ public class GroupServlet extends HttpServlet { if (dataStore.getGroupDao().deleteObject(constraint)) { // if deletion was successful, cascade the deletion onto the users List<UserProfile> validProfiles = dataStore.getUserProfileDao().getObjects(null).stream().filter(profile -> - profile.getGroupMemberships().remove(Long.parseLong(req.getParameter("groupName")))).collect(Collectors.toList()); + profile.getGroupMemberships().remove(req.getParameter("groupName"))).collect(Collectors.toList()); + + + + + + + + validProfiles.parallelStream().forEach(profile -> { + + StatementList statementList = new StatementList(); + StatementElement st = new StatementElement("username", "=", profile.getUsername(), ""); + statementList.addStatement(st); + + UserGroupMapping mapping = dataStore.getUserGroupMappingsDao().getObjects(statementList).get(0); + mapping.removeGroup(req.getParameter("groupName")); + + StatementList update = new StatementList(); + StatementElement st0 = new StatementElement("groups", "=", mapping.getGroups(), ""); + update.addStatement(st0); + StatementList constraint2 = new StatementList(); + StatementElement st1 = new StatementElement("username", "=", mapping.getUsername(), ""); + constraint2.addStatement(st1); + + // update user mappings + dataStore.getUserGroupMappingsDao().updateObject(update, constraint2); + + // then update the profile itself + dataStore.updateUserProfile(profile); + }); - validProfiles.forEach(profile -> - dataStore.updateUserProfile(profile)); resp.setStatus(200); }