diff --git a/jams-react-client/package.json b/jams-react-client/package.json index 92b53ab010f003ddb6e251a89c2b636e7e84e774..c8f13356ea0c6d844742353792a895c93f02dd2f 100644 --- a/jams-react-client/package.json +++ b/jams-react-client/package.json @@ -15,6 +15,7 @@ "history": "4.10.1", "image-to-base64": "^2.1.1", "material-ui-popup-state": "^1.6.1", + "package.json": "^2.0.1", "perfect-scrollbar": "1.5.0", "prop-types": "15.7.2", "react": "16.13.1", diff --git a/jams-react-client/src/views/UserProfile/EditCreateUserProfile.js b/jams-react-client/src/views/UserProfile/EditCreateUserProfile.js index af62ea4cdc7cc96e32828fa466c8dcf97f7adcb5..3c1f94a6fe608626b776fd61b78350d97e8b04bd 100644 --- a/jams-react-client/src/views/UserProfile/EditCreateUserProfile.js +++ b/jams-react-client/src/views/UserProfile/EditCreateUserProfile.js @@ -259,8 +259,8 @@ export default function EditCreateUserProfile(props) { "username": input } axios(configApiCall(api_path_get_exists_user, 'GET', data, null)).then((response) =>{ - if(response.data == "[]"){ - setUserExists(true) + if(response.status == 200){ + setUserExists(false) } }).catch((error) => { console.log("Error checking for existing users: " + error) diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/users/UserServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/users/UserServlet.java index 8b5f3b6a7698fcd1ca583c32037f329ada07d85e..7974a9d32368561952fbbc8a8c73e35d2833b130 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/users/UserServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/users/UserServlet.java @@ -50,7 +50,7 @@ import static net.jami.jams.server.Server.userAuthenticationModule; @WebServlet("/api/admin/user") public class UserServlet extends HttpServlet { - //Get the user profile. + //Get the user @Override @ScopedServletMethod(securityGroups = {AccessLevel.ADMIN}) @JsonContent @@ -58,27 +58,32 @@ public class UserServlet extends HttpServlet { StatementList statementList = new StatementList(); StatementElement st1 = new StatementElement("username","=",req.getParameter("username"),""); statementList.addStatement(st1); - User user = dataStore.getUserDao().getObjects(statementList).get(0); - if(certificateAuthority.getLatestCRL().get() != null) { - user.setRevoked(certificateAuthority.getLatestCRL().get().getRevokedCertificate(user.getCertificate().getSerialNumber()) != null); - } - else user.setRevoked(false); - if (!user.getNeedsPasswordReset() && req.getParameter("needPW") != null) { - String password = PasswordGenerator.generatePassword(); - StatementList update = new StatementList(); - StatementElement st0 = new StatementElement("password","=",password,""); - update.addStatement(st0); - StatementList constraint = new StatementList(); - StatementElement st = new StatementElement("username","=",req.getParameter("username"),""); - constraint.addStatement(st); - StatementElement st2 = new StatementElement("needsPasswordReset","=","true",""); - update.addStatement(st2); - // refresh variable - dataStore.getUserDao().updateObject(update,constraint); - user = dataStore.getUserDao().getObjects(statementList).get(0); + if (!dataStore.getUserDao().getObjects(statementList).isEmpty()) { + User user = dataStore.getUserDao().getObjects(statementList).get(0); + if (certificateAuthority.getLatestCRL().get() != null) + user.setRevoked(certificateAuthority.getLatestCRL().get().getRevokedCertificate(user.getCertificate().getSerialNumber()) != null); + else user.setRevoked(false); + + if (!user.getNeedsPasswordReset() && req.getParameter("needPW") != null) { + String password = PasswordGenerator.generatePassword(); + StatementList update = new StatementList(); + StatementElement st0 = new StatementElement("password", "=", password, ""); + update.addStatement(st0); + StatementList constraint = new StatementList(); + StatementElement st = new StatementElement("username", "=", req.getParameter("username"), ""); + constraint.addStatement(st); + StatementElement st2 = new StatementElement("needsPasswordReset", "=", "true", ""); + update.addStatement(st2); + // refresh variable + dataStore.getUserDao().updateObject(update, constraint); + user = dataStore.getUserDao().getObjects(statementList).get(0); + } + resp.getOutputStream().write(JsonStream.serialize(user).getBytes()); + resp.setStatus(200); + } else { + resp.sendError(404, "Could not obtain user!"); } - resp.getOutputStream().write(JsonStream.serialize(user).getBytes()); } //Create an internal user - this is always technically available, because internal users have the right to exist. diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java index dfc1a9fcde91000b5bea1677aa4a9875de58e8d9..39baf1f0d9b04653298a4c892334db2dc3b0b7a5 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java @@ -75,12 +75,16 @@ public class UserServlet extends HttpServlet { StatementList statementList = new StatementList(); StatementElement st = new StatementElement("username","=",req.getAttribute("username").toString(),""); statementList.addStatement(st); - User user = dataStore.getUserDao().getObjects(statementList).get(0); - if(certificateAuthority.getLatestCRL().get() != null) { - user.setRevoked(certificateAuthority.getLatestCRL().get().getRevokedCertificate(user.getCertificate().getSerialNumber()) != null); + if (!dataStore.getUserDao().getObjects(statementList).isEmpty()) { + User user = dataStore.getUserDao().getObjects(statementList).get(0); + if(certificateAuthority.getLatestCRL().get() != null) { + user.setRevoked(certificateAuthority.getLatestCRL().get().getRevokedCertificate(user.getCertificate().getSerialNumber()) != null); + } + else user.setRevoked(false); + resp.setStatus(200); + resp.getOutputStream().write(JsonStream.serialize(user).getBytes()); } - else user.setRevoked(false); - resp.getOutputStream().write(JsonStream.serialize(user).getBytes()); + resp.sendError(404, "User was not found!"); } //The user can update 3 fields: password,privatekey,publickey