Skip to content
Snippets Groups Projects
Commit 65a1f47a authored by William Enright's avatar William Enright Committed by Larbi Gharib
Browse files

Adding user to a group now properly updates the group's member list

Change-Id: Ic75aaf98a73cc71019e7b0cb0f50f10584f44679
parent dcf81458
No related branches found
No related tags found
No related merge requests found
......@@ -17,31 +17,29 @@ public class AddUserToGroupFlow {
public static void addUserToGroup(String groupName, String username) {
userAuthenticationModule.getAuthSources().forEach((k, v) -> {
List<UserProfile> profiles = v.searchUserProfiles(username, "LOGON_NAME");
if (!profiles.isEmpty()) {
UserProfile profile = profiles.get(0);
UserProfile profile = v.getUserProfile(username);
List<UserProfile> groupProfiles = v.searchUserProfiles(username, "LOGON_NAME");
if (!groupProfiles.isEmpty()) {
UserGroupMapping mapping = null;
StatementList statementList = new StatementList();
statementList.addStatement(new StatementElement("name", "=", username, ""));
if (profile != null) {
if (profile.getGroupMemberships() == null)
profile.setGroupMemberships(new ArrayList<>());
profile.getGroupMemberships().add(groupName);
}
statementList = new StatementList();
statementList.addStatement(new StatementElement("username", "=", username, ""));
if (dataStore.getUserGroupMappingsDao().getObjects(statementList).isEmpty()) {
// if the mapping doesn't exist, create it and add the group directly.
UserGroupMapping newMapping = new UserGroupMapping();
newMapping.setUsername(username);
newMapping.setGroups("");
newMapping.addGroup(groupName);
dataStore.getUserGroupMappingsDao().storeObject(newMapping);
try {
mapping = new UserGroupMapping();
} catch (Exception e) {
e.printStackTrace();
}
mapping.setUsername(username);
mapping.setGroups("");
mapping.addGroup(groupName);
dataStore.getUserGroupMappingsDao().storeObject(mapping);
} else {
// otherwise, update the object.
UserGroupMapping mapping = dataStore.getUserGroupMappingsDao().getObjects(statementList).get(0);
mapping = dataStore.getUserGroupMappingsDao().getObjects(statementList).get(0);
mapping.addGroup(groupName);
String newGroups = mapping.getGroups();
......@@ -53,6 +51,13 @@ public class AddUserToGroupFlow {
constraint.addStatement(st1);
dataStore.getUserGroupMappingsDao().updateObject(update, constraint);
}
if (profile != null) {
if (profile.getGroupMemberships() == null)
profile.setGroupMemberships(new ArrayList<>());
profile.getGroupMemberships().add(groupName);
dataStore.updateUserProfile(profile);
}
}
});
}
......
......@@ -23,6 +23,7 @@ import java.util.List;
import java.util.stream.Collectors;
import static net.jami.jams.server.Server.dataStore;
import static net.jami.jams.server.Server.userAuthenticationModule;
@WebServlet("/api/admin/group")
@Slf4j
......@@ -93,13 +94,15 @@ public class GroupServlet extends HttpServlet {
profiles.forEach(profile ->
targetGroup.getGroupMembers().add(profile.getUsername()));
String groupMembers = req.getParameter("groupMembers");
// if the username sent isn't already part of the group members, then we add it
if (!targetGroup.getGroupMembers().contains(req.getParameter("groupMembers")))
if (!targetGroup.getGroupMembers().contains(groupMembers)) {
// otherwise remove the group from the user's memberships.
AddUserToGroupFlow.addUserToGroup(name, req.getParameter("groupMembers"));
// otherwise remove the group from the user's memberships.
else {
} else {
statementList = new StatementList();
st = new StatementElement("username", "=", req.getParameter("groupMembers"), "");
st = new StatementElement("username", "=", groupMembers, "");
statementList.addStatement(st);
UserProfile targetProfile = dataStore.getUserProfileDao().getObjects(statementList).get(0);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment