diff --git a/datastore/src/main/java/net/jami/datastore/main/DataStore.java b/datastore/src/main/java/net/jami/datastore/main/DataStore.java index a76fe543199f8b65466ba664ad2736b85e1bd0ce..fb1c51c8248df0bbc301ffebc54e8df339262626 100644 --- a/datastore/src/main/java/net/jami/datastore/main/DataStore.java +++ b/datastore/src/main/java/net/jami/datastore/main/DataStore.java @@ -129,7 +129,7 @@ public class DataStore implements AuthenticationSource { update.addStatement(new StatementElement("phoneNumberExtension","=",userProfile.getPhoneNumberExtension(),"")); update.addStatement(new StatementElement("faxNumber","=",userProfile.getFaxNumber(),"")); update.addStatement(new StatementElement("mobileNumber","=",userProfile.getMobileNumber(),"")); - if (userProfile.getGroupMemberships() != null) { + if (userProfile.getGroupMemberships() != null && !userProfile.getGroupMemberships().isEmpty()) { String groups = ""; for (String s: userProfile.getGroupMemberships()) { if (groups.equals("")) @@ -138,7 +138,10 @@ public class DataStore implements AuthenticationSource { groups = groups.concat("," + s); } update.addStatement(new StatementElement("groupMemberships","=", groups ,"")); - } + } else + update.addStatement(new StatementElement("groupMemberships","=", "" ,"")); + + return userProfileDao.updateObject(update, null); } diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/UserProfile.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/UserProfile.java index 83833684912f5741a79fd71f4e9fa45af111dfbf..ea1777ceb51c13696a13f83b435c6e6792080074 100644 --- a/jams-common/src/main/java/net/jami/jams/common/objects/user/UserProfile.java +++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/UserProfile.java @@ -89,7 +89,9 @@ public class UserProfile implements DatabaseObject { this.phoneNumberExtension = rs.getString("phoneNumberExtension"); this.faxNumber = rs.getString("faxNumber"); this.mobileNumber = rs.getString("mobileNumber"); - this.groupMemberships = Arrays.asList(JsonIterator.deserialize(rs.getString("groupMemberships"),String[].class)); + String groupMemberships = rs.getString("groupMemberships"); + String[] groups = groupMemberships.split(","); + this.groupMemberships = Arrays.asList(groups); } @JsonIgnore @@ -131,9 +133,10 @@ public class UserProfile implements DatabaseObject { ps.setString(8, phoneNumberExtension); ps.setString(9, faxNumber); ps.setString(10, mobileNumber); - if (groupMemberships == null) - groupMemberships = new ArrayList<>(); - ps.setString(11, JsonStream.serialize(groupMemberships)); + if (!groupMemberships.isEmpty()) + ps.setString(11, JsonStream.serialize(groupMemberships)); + else + ps.setString(11, ""); return ps; } diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java index 27c8fa74feb7373a089b25510fe01f751f79072c..84f4bcee52c7e22decb0dd9608bdf46301aa90cb 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java @@ -30,6 +30,7 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; import net.jami.jams.common.annotations.ScopedServletMethod; import net.jami.jams.common.authentication.AuthenticationSourceType; import net.jami.jams.common.authmodule.AuthModuleKey; @@ -40,13 +41,14 @@ import net.jami.jams.common.objects.user.UserProfile; import org.json.JSONObject; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; import static net.jami.jams.server.Server.userAuthenticationModule; import static net.jami.jams.server.Server.dataStore; - +@Slf4j @WebServlet("/api/admin/directory/entry") public class DirectoryEntryServlet extends HttpServlet { @@ -71,6 +73,7 @@ public class DirectoryEntryServlet extends HttpServlet { userProfile.setFaxNumber(obj.get("faxNumber").toString()); userProfile.setMobileNumber(obj.get("mobileNumber").toString()); userProfile.setJamiId(obj.get("jamiId").toString()); + userProfile.setGroupMemberships(new ArrayList<>()); userAuthenticationModule.getAuthSources().get(new AuthModuleKey(realm, AuthenticationSourceType.LOCAL)) .setUserProfile(userProfile); @@ -97,7 +100,9 @@ public class DirectoryEntryServlet extends HttpServlet { resp.setStatus(200); else resp.sendError(500,"could not update the users's profile information"); } - catch(Exception e){} + catch(Exception e){ + System.out.println(e); + } }