diff --git a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java index b892994452169e21e78426a8e90a6fa59bd997af..324f1a6dd529de0ddcc7b3af9cb3009cc7782ebe 100644 --- a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java +++ b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java @@ -30,14 +30,12 @@ import net.jami.jams.common.dao.StatementList; import net.jami.jams.common.objects.devices.Device; import net.jami.jams.common.objects.requests.DeviceRegistrationRequest; import net.jami.jams.common.objects.responses.DeviceRegistrationResponse; -import net.jami.jams.common.objects.user.Group; -import net.jami.jams.common.objects.user.Policy; -import net.jami.jams.common.objects.user.PolicyData; -import net.jami.jams.common.objects.user.User; -import net.jami.jams.common.objects.user.UserProfile; +import net.jami.jams.common.objects.user.*; import net.jami.jams.dht.DeviceReceiptGenerator; import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.List; import static net.jami.jams.server.Server.certificateAuthority; import static net.jami.jams.server.Server.dataStore; @@ -52,7 +50,6 @@ public class RegisterDeviceFlow { StatementList statementList = new StatementList(); statementList.addStatement(new StatementElement("username", "=", username, "")); User user = dataStore.getUserDao().getObjects(statementList).get(0); -// UserProfile userProfile = dataStore.getUserProfileDao().getObjects(statementList).get(0); UserProfile userProfile = userAuthenticationModule.getAuthSources() .get(new AuthModuleKey(user.getRealm(),user.getUserType())) .searchUserProfiles(username,"LOGON_NAME").get(0); @@ -70,6 +67,24 @@ public class RegisterDeviceFlow { return null; } dataStore.getDeviceDao().storeObject(device); + + statementList = new StatementList(); + statementList.addStatement(new StatementElement("username", "=", username, "")); + if (dataStore.getUserGroupMappingsDao().getObjects(statementList) != null) { + UserGroupMapping mapping = dataStore.getUserGroupMappingsDao().getObjects(statementList).get(0); + List<String> list = new ArrayList<>(); + if (mapping.getUsername().equals(userProfile.getUsername())) { + String[] splits = mapping.getGroups().split(","); + + for (int i = 0; i < splits.length; i++) + list.add(splits[i]); + } + if (!list.isEmpty()) + userProfile.setGroupMemberships(list); + } + + + //Now we build this response out. DeviceRegistrationResponse response = new DeviceRegistrationResponse(); if(userProfile.getGroupMemberships() != null) { diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java index 81781d93a9a505f1220e2ce7a23f7066b140b297..a8e25006c5c0e1ab2e9983c848daca388c2ab35f 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java @@ -96,25 +96,6 @@ public class SearchDirectoryServlet extends HttpServlet { } }); }); - - // update user group mappings table - userProfiles.forEach(profile -> { - List<UserGroupMapping> mappings = dataStore.getUserGroupMappingsDao().getObjects(null); - for(UserGroupMapping mapping: mappings) { - List<String> list = new ArrayList<>(); - if (mapping.getUsername().equals(profile.getUsername())) { - String[] splits = mapping.getGroups().split(","); - - for (int i = 0; i < splits.length; i++) - list.add(splits[i]); - - } - - if (!list.isEmpty()) - profile.setGroupMemberships(list); - } - dataStore.updateUserProfile(profile); - }); if (!userProfiles.isEmpty()) { resp.getOutputStream().write(JsonStream.serialize(userProfiles).getBytes()); resp.setStatus(200);