From 31a1b8270852b825b8097491927c7d9381cf3766 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?L=C3=A9o=20Banno-Cloutier?=
 <leo.banno-cloutier@savoirfairelinux.com>
Date: Wed, 26 Jul 2023 09:59:13 -0400
Subject: [PATCH] jams-server: better 404 handling

Change-Id: I99970a5b3b1bcf409162b89b3d94df7357fcc761
---
 .../servlets/api/auth/policyData/PolicyDataServlet.java  | 5 ++++-
 .../server/servlets/api/image/FileHandlerServlet.java    | 9 +++++----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/policyData/PolicyDataServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/policyData/PolicyDataServlet.java
index 0087a0af..ff01dd92 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/policyData/PolicyDataServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/policyData/PolicyDataServlet.java
@@ -26,6 +26,7 @@ import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 
 import net.jami.jams.common.objects.user.Group;
+import net.jami.jams.common.serialization.tomcat.TomcatCustomErrorHandler;
 import net.jami.jams.server.core.workflows.RegisterDeviceFlow;
 import net.jami.jams.server.servlets.api.auth.device.DeviceServlet;
 
@@ -60,6 +61,7 @@ public class PolicyDataServlet extends HttpServlet {
      *                    "Account.uiCustomization":
      *                    "{\"areTipsEnabled\":false,\"backgroundType\":\"default\"}"
      *                    }]
+     * @apiError (404) {null} null Policy Data could not be retrieved
      * @apiError (500) {null} null Policy Data could not be retrieved
      */
     @Override
@@ -71,7 +73,8 @@ public class PolicyDataServlet extends HttpServlet {
         String policyData = RegisterDeviceFlow.getPolicyData(group);
 
         if (policyData == null) {
-            resp.setStatus(404);
+            TomcatCustomErrorHandler.sendCustomError(
+                    resp, 404, "Policy Data not found for this user");
             return;
         }
 
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/image/FileHandlerServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/image/FileHandlerServlet.java
index 9ac1bb43..6ac7245f 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/image/FileHandlerServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/image/FileHandlerServlet.java
@@ -11,7 +11,6 @@ import jakarta.servlet.http.Part;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.nio.file.Files;
@@ -162,6 +161,11 @@ public class FileHandlerServlet extends HttpServlet {
             String fileName = pathParts[3];
 
             Path imageFilePath = Paths.get(IMAGES_DIR, blueprintName, imageType, fileName);
+            if (!imageFilePath.toFile().exists()) {
+                response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                return;
+            }
+
             byte[] imageData = Files.readAllBytes(imageFilePath);
 
             String mimeType = Files.probeContentType(imageFilePath);
@@ -174,9 +178,6 @@ public class FileHandlerServlet extends HttpServlet {
             try (OutputStream out = response.getOutputStream()) {
                 out.write(imageData);
             }
-        } catch (FileNotFoundException e) {
-            log.error("FileHandlerServlet: Error while processing request", e);
-            response.sendError(HttpServletResponse.SC_NOT_FOUND);
         } catch (IOException e) {
             log.error("FileHandlerServlet: Error while processing request", e);
             response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-- 
GitLab