From 92a9e3233af23bdd09af212d215620839f924556 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?L=C3=A9o=20Banno-Cloutier?=
 <leo.banno-cloutier@savoirfairelinux.com>
Date: Fri, 25 Aug 2023 16:55:20 -0400
Subject: [PATCH] jams-server: remove 404 handling when returning lists

We instead return 200 with an empty list

Change-Id: I43f10783548ec4581e6fcdddc187adb8247d2b5b
---
 .dockerignore                                       |  2 ++
 README.md                                           |  8 ++++++++
 extras/scripts/pre-commit                           |  5 +++--
 extras/scripts/setup_jams.sh                        |  2 +-
 .../jami/jams/common/objects/contacts/Contact.java  |  1 -
 .../jami/jams/common/objects/devices/Device.java    |  1 -
 jams-react-client/src/views/Groups/Groups.tsx       |  3 ---
 .../api/admin/directory/DirectoryEntryServlet.java  |  1 -
 .../servlets/api/admin/group/GroupsServlet.java     | 10 ++--------
 .../servlets/api/admin/group/UserGroupServlet.java  | 13 +++----------
 .../servlets/api/admin/users/UserGroupsServlet.java | 10 ++--------
 11 files changed, 21 insertions(+), 35 deletions(-)

diff --git a/.dockerignore b/.dockerignore
index 99519023..6d2bb29b 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -19,3 +19,5 @@ derby.log
 extras
 jams
 jams-server/src/main/resources/webapp
+
+package-lock.json
diff --git a/README.md b/README.md
index 1e46942e..34dc145d 100644
--- a/README.md
+++ b/README.md
@@ -146,3 +146,11 @@ Don't forget to launch jams locally at least once before proceeding.
 The files in the `filters` folder are prefixed "A", "B", "C" and "D" so that the
 order of execution of the filters are right (jakarta registers filters in
 alphabetical order).
+
+## Notes about jams-server
+- /api/admin is the route for all admins actions, it gives read and write permissions to all users' data
+- /api/auth is the route for **authenticated** users, it lets you read all
+users' data and edit your own profile. This route has nothing to do with authentication
+- /api/login is the route to authenticate users
+- /api/install is the routes used to setup jams initially, once the initial setup
+is done its endpoints tells the client that the server is already installed
diff --git a/extras/scripts/pre-commit b/extras/scripts/pre-commit
index 26fe0fc6..d0d6572d 100755
--- a/extras/scripts/pre-commit
+++ b/extras/scripts/pre-commit
@@ -1,6 +1,7 @@
-#!/usr/bin/env bash
+#!/usr/bin/env sh
 
 cd jams-react-client
 npm run format
+cd ..
 
-google-java-format -i -a **/*.java
+google-java-format -i -a --skip-reflowing-long-strings --skip-javadoc-formatting **/*.java
diff --git a/extras/scripts/setup_jams.sh b/extras/scripts/setup_jams.sh
index 8295d3db..c868ed31 100755
--- a/extras/scripts/setup_jams.sh
+++ b/extras/scripts/setup_jams.sh
@@ -69,7 +69,7 @@ install_auth() {
 install_settings() {
     post '/api/install/settings' \
         '{
-            "serverDomain":"http://localhost:3000",
+            "serverDomain":"http://localhost:8080",
             "crlLifetime":300000,
             "deviceLifetime":31556952000,
             "userLifetime":31556952000,
diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/contacts/Contact.java b/jams-common/src/main/java/net/jami/jams/common/objects/contacts/Contact.java
index e77a3761..213cdc80 100644
--- a/jams-common/src/main/java/net/jami/jams/common/objects/contacts/Contact.java
+++ b/jams-common/src/main/java/net/jami/jams/common/objects/contacts/Contact.java
@@ -23,7 +23,6 @@
 
 package net.jami.jams.common.objects.contacts;
 
-
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/devices/Device.java b/jams-common/src/main/java/net/jami/jams/common/objects/devices/Device.java
index fa5e33d0..59043496 100644
--- a/jams-common/src/main/java/net/jami/jams/common/objects/devices/Device.java
+++ b/jams-common/src/main/java/net/jami/jams/common/objects/devices/Device.java
@@ -22,7 +22,6 @@
  */
 package net.jami.jams.common.objects.devices;
 
-
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
diff --git a/jams-react-client/src/views/Groups/Groups.tsx b/jams-react-client/src/views/Groups/Groups.tsx
index 2213d7fc..73e5124e 100644
--- a/jams-react-client/src/views/Groups/Groups.tsx
+++ b/jams-react-client/src/views/Groups/Groups.tsx
@@ -158,9 +158,6 @@ export default function Groups() {
                 auth.authenticated = false;
                 history.push("/");
               }
-              if (error.response.status === 404) {
-                group["groupMembersLength"] = 0;
-              }
             });
         });
         setGroups(allGroups);
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 4b93cae2..50378dd7 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
@@ -27,7 +27,6 @@ import static net.jami.jams.server.Server.dataStore;
 import static net.jami.jams.server.Server.userAuthenticationModule;
 
 import com.google.gson.Gson;
-import com.google.gson.JsonObject;
 
 import jakarta.servlet.ServletException;
 import jakarta.servlet.annotation.WebServlet;
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupsServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupsServlet.java
index 3ed4faa3..1b8d5a8b 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupsServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupsServlet.java
@@ -31,14 +31,8 @@ public class GroupsServlet extends HttpServlet {
     @JsonContent
     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
             throws ServletException, IOException {
-
         List<Group> groups = dataStore.getGroupDao().getAll();
-
-        if (!groups.isEmpty()) {
-            resp.getOutputStream().write(gson.toJson(groups).getBytes());
-            resp.setStatus(200);
-        } else {
-            resp.setStatus(404);
-        }
+        resp.getOutputStream().write(gson.toJson(groups).getBytes());
+        resp.setStatus(200);
     }
 }
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/UserGroupServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/UserGroupServlet.java
index ef891e6d..53ed76d6 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/UserGroupServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/UserGroupServlet.java
@@ -44,23 +44,16 @@ public class UserGroupServlet extends HttpServlet {
     @ScopedServletMethod(securityGroups = {AccessLevel.ADMIN})
     @JsonContent
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
-
         String groupId = req.getPathInfo().replace("/", "");
-
         List<UserGroupMapping> result = dataStore.getUserGroupMappingsDao().getByGroupId(groupId);
-
-        if (result.isEmpty()) resp.sendError(404, "No users found for this group!");
-        else {
-            resp.getOutputStream().write(gson.toJson(result).getBytes());
-            resp.setStatus(200);
-        }
+        resp.getOutputStream().write(gson.toJson(result).getBytes());
+        resp.setStatus(200);
     }
 
     @Override
     @ScopedServletMethod(securityGroups = {AccessLevel.ADMIN})
     @JsonContent
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
-
         String groupId = req.getPathInfo().replace("/", "");
 
         JsonObject obj = gson.fromJson(req.getReader(), JsonObject.class);
@@ -70,7 +63,7 @@ public class UserGroupServlet extends HttpServlet {
                 dataStore.getUserGroupMappingsDao().getByGroupIdAndUsername(groupId, username);
 
         if (existingMapping.isPresent()) {
-            resp.sendError(409, "The user already part of the group!");
+            resp.sendError(HttpServletResponse.SC_CONFLICT, "The user already part of the group!");
             return;
         }
 
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/users/UserGroupsServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/users/UserGroupsServlet.java
index 1c012032..eb4766ef 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/users/UserGroupsServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/users/UserGroupsServlet.java
@@ -42,15 +42,9 @@ public class UserGroupsServlet extends HttpServlet {
     @ScopedServletMethod(securityGroups = {AccessLevel.ADMIN})
     @JsonContent
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
-
         String username = req.getPathInfo().replace("/", "");
-
         List<UserGroupMapping> result = dataStore.getUserGroupMappingsDao().getByUsername(username);
-
-        if (result.isEmpty()) resp.sendError(404, "No groups found for this user!");
-        else {
-            resp.getOutputStream().write(gson.toJson(result).getBytes());
-            resp.setStatus(200);
-        }
+        resp.getOutputStream().write(gson.toJson(result).getBytes());
+        resp.setStatus(200);
     }
 }
-- 
GitLab