From c045d87f482d75d7105e87915eae2b0281b7f9d0 Mon Sep 17 00:00:00 2001
From: Larbi Gharib <larbi.gharib@savoirfairelinux.com>
Date: Thu, 6 May 2021 02:26:16 +0000
Subject: [PATCH] Json content type log errors

Change-Id: I1cab969e09dc23b848af9f045874d2b829a9f1b1
---
 jams-react-client/src/auth.js                 | 11 ++-----
 .../src/components/Devices/Devices.js         | 31 +++++++++++++++----
 .../Blueprint/EditBlueprintPermissions.js     |  1 -
 .../src/views/Blueprints/Blueprints.js        |  2 --
 .../src/views/Contacts/Contacts.js            |  7 ++---
 .../src/views/Groups/EditGroup.js             | 13 ++++----
 jams-react-client/src/views/Groups/Groups.js  |  7 ++---
 .../views/UserProfile/DisplayUserProfile.js   | 27 ++++++++++------
 jams-react-client/src/views/Users/Users.js    |  4 +--
 .../jams/server/servlets/LoginServlet.java    |  1 +
 .../api/jaminameserver/AddressServlet.java    |  1 +
 .../api/jaminameserver/NameServlet.java       |  1 +
 .../server/servlets/filters/ApiFilter.java    |  1 +
 .../servlets/filters/InstallFilter.java       |  1 +
 .../servlets/general/ServerStatusServlet.java |  1 +
 15 files changed, 64 insertions(+), 45 deletions(-)

diff --git a/jams-react-client/src/auth.js b/jams-react-client/src/auth.js
index ac138a04..eae75c7b 100644
--- a/jams-react-client/src/auth.js
+++ b/jams-react-client/src/auth.js
@@ -130,14 +130,15 @@ class Auth {
             }
             cb()
         }).catch((error) => {
-            console.log("Error during API request on checkServerIsInstalled: " + error);
+            if (error.response.status === 401) {
+                this.authenticated = false;
+            }
         });
     }
 
     checkLastKnownStep(cb) {
         if(this.installed){
             this.authenticated = true
-            console.log("Auth: Server is already installed")
             cb()
         }else{
             axios(configApiCall(api_path_get_install_lastKnownStep, 'GET', null, null)).then((response) => {
@@ -147,10 +148,6 @@ class Auth {
             }).catch((error) => {
                 if(error.response.status === 401){
                     this.authenticated = false;
-                    console.log("Error during API request on checkLastKnowStep not authenticated!");
-                }
-                else{
-                    console.log("Error during API request on checkLastKnowStep: " + error);
                 }
                 cb()
             })
@@ -169,7 +166,6 @@ class Auth {
                 this.authenticated = true
                 cb()
             }).catch((error) => {
-                console.log("Error during API request on checkLastKnownStep: " + error);
                 cb()
             })
         }
@@ -188,7 +184,6 @@ class Auth {
                 this.authenticated = true
                 cb()
             }).catch((error) => {
-                console.log("Error during API request on checkLastKnownStep: " + error);
                 cb()
             })
         }
diff --git a/jams-react-client/src/components/Devices/Devices.js b/jams-react-client/src/components/Devices/Devices.js
index 411af215..9f053633 100755
--- a/jams-react-client/src/components/Devices/Devices.js
+++ b/jams-react-client/src/components/Devices/Devices.js
@@ -1,4 +1,6 @@
 import React, {useEffect} from "react";
+import { useHistory } from "react-router-dom";
+
 import classnames from "classnames";
 import {Formik, Field} from "formik";
 // @material-ui/core components
@@ -38,31 +40,48 @@ const useStyles = makeStyles(styles);
 
 export default function Devices(props) {
     const classes = useStyles();
+    const history = useHistory();
+
     const [devices, setDevices] = React.useState([])
     const [selectedDevice, setSelectedDevice]= React.useState({});
     const [displayName, setDisplayName] = React.useState("")
     const [openEdit, setOpenEdit] = React.useState(false);
     const [openRevoke, setOpenRevoke] = React.useState(false);
     const  userData = {
-        "username":props.username
+        "username": props.username
     };
 
     useEffect(() => {
         auth.checkDirectoryType(() => {
             if(auth.hasAdminScope()){
                 axios(configApiCall(api_path_get_admin_devices, 'GET', userData, null)).then((response)=>{
-                    var resultSet = JSON.parse(response.data.replace(/\s+/g, ' ').trim());
-                    setDevices(resultSet)
+                    if(response.data.length == 0) {
+                        setDevices([]);
+                    }else{
+                        var resultSet = JSON.parse(response.data.replace(/\s+/g, ' ').trim());
+                        setDevices(resultSet)
+                    }
                 }).catch((error) =>{
                     console.log(error);
+                    if (error.response.status === 401) {
+                        auth.authenticated = false;
+                        history.push("/signin");
+                    }
                 });
             }
             else{
                 axios(configApiCall(api_path_get_auth_devices, 'GET', null, null)).then((response)=>{
-                    var resultSet = JSON.parse(response.data.replace(/\s+/g, ' ').trim());
-                    setDevices(resultSet)
+                    if(response.data.length == 0) {
+                        setDevices([]);
+                    }else{
+                        var resultSet = JSON.parse(response.data.replace(/\s+/g, ' ').trim());
+                        setDevices(resultSet)
+                    }
                 }).catch((error) =>{
-                    console.log(error);
+                    if (error.response.status === 401) {
+                        auth.authenticated = false;
+                        history.push("/signin");
+                    }
                 });
             }
         })
diff --git a/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js b/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js
index d5fb210c..3eabab55 100644
--- a/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js
+++ b/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js
@@ -174,7 +174,6 @@ export default function EditBlueprintPermissions(props) {
         setUsers(profiles);
       })
       .catch((error) => {
-        console.log(error);
         setUsers([]);
         if (error.response.status === 401) {
           auth.authenticated = false;
diff --git a/jams-react-client/src/views/Blueprints/Blueprints.js b/jams-react-client/src/views/Blueprints/Blueprints.js
index 2bdddb4f..dc9ffcd0 100644
--- a/jams-react-client/src/views/Blueprints/Blueprints.js
+++ b/jams-react-client/src/views/Blueprints/Blueprints.js
@@ -127,7 +127,6 @@ export default function Blueprints() {
       })
       .catch((error) => {
         setBlueprints([]);
-        console.log(error);
         if (error.response.status === 401) {
           auth.authenticated = false;
           history.push("/");
@@ -159,7 +158,6 @@ export default function Blueprints() {
         setBlueprintNameExits(true);
       })
       .catch((error) => {
-        console.log(error);
         setDisableCreate(false);
         setBlueprintNameExits(false);
       });
diff --git a/jams-react-client/src/views/Contacts/Contacts.js b/jams-react-client/src/views/Contacts/Contacts.js
index 8124eaa7..bf2ee4e8 100644
--- a/jams-react-client/src/views/Contacts/Contacts.js
+++ b/jams-react-client/src/views/Contacts/Contacts.js
@@ -117,11 +117,10 @@ export default function Users(props) {
         setUsers(profiles);
       })
       .catch((error) => {
-        console.log(error);
         setUsers([]);
         if (error.response.status === 401) {
           auth.authenticated = false;
-          history.push("/");
+          history.push("/signin");
         }else if(error.response.status === 403){
           setAllowedToAdd(false);
         }
@@ -174,7 +173,6 @@ export default function Users(props) {
           setLoading(false);
         })
         .catch((error) => {
-          console.log(error);
           if (error.response.status === 401) {
             auth.authenticated = false;
             history.push("/");
@@ -217,10 +215,9 @@ export default function Users(props) {
           setLoading(false);
         })
         .catch((error) => {
-          console.log(error);
           if (error.response.status === 401) {
             auth.authenticated = false;
-            history.push("/");
+            history.push("/signin");
           }
         });
     }
diff --git a/jams-react-client/src/views/Groups/EditGroup.js b/jams-react-client/src/views/Groups/EditGroup.js
index 5953ae3a..a957259a 100644
--- a/jams-react-client/src/views/Groups/EditGroup.js
+++ b/jams-react-client/src/views/Groups/EditGroup.js
@@ -158,10 +158,9 @@ export default function EditGroup(props) {
                 });
             })
             .catch((error) => {
-              console.log(error);
               if (error.response.status === 401) {
                 auth.authenticated = false;
-                history.push("/");
+                history.push("/signin");
               }
               if (error.response.status === 500) {
                 setBlueprints([]);
@@ -185,8 +184,10 @@ export default function EditGroup(props) {
                 if (error.response.status === 404) {
                     setGroupMembers([]);
                 }
-                else
-                    console.log(error);
+                if (error.response.status === 401) {
+                    auth.authenticated = false;
+                    history.push("/signin");
+                }
             })
 
 
@@ -255,11 +256,10 @@ export default function EditGroup(props) {
             setUsers(profiles);
           })
           .catch((error) => {
-            console.log(error);
             setUsers([]);
             if (error.response.status === 401) {
               auth.authenticated = false;
-              history.push("/");
+              history.push("/signin");
             }
           });
       };
@@ -336,7 +336,6 @@ export default function EditGroup(props) {
             });
           })
           .catch((error) => {
-            console.log(error);
             setGroupNameExits(false);
           });
       };
diff --git a/jams-react-client/src/views/Groups/Groups.js b/jams-react-client/src/views/Groups/Groups.js
index aba42d2c..161f44ba 100644
--- a/jams-react-client/src/views/Groups/Groups.js
+++ b/jams-react-client/src/views/Groups/Groups.js
@@ -165,10 +165,9 @@ export default function Groups() {
       setSelectedBlueprint(getBlueprintsOptions()[0]);
     })
     .catch((error) => {
-      console.log(error);
       if (error.response.status === 401) {
         auth.authenticated = false;
-        history.push("/");
+        history.push("/signin");
       }
       if (error.response.status === 500) {
         setBlueprints([]);
@@ -212,10 +211,9 @@ export default function Groups() {
         setLoading(false);
       })
       .catch((error) => {
-        console.log(error);
         if (error.response.status === 401) {
           auth.authenticated = false;
-          history.push("/");
+          history.push("/signin");
         }
         if (error.response.status === 404){
           getBlueprints();
@@ -249,7 +247,6 @@ export default function Groups() {
         });
       })
       .catch((error) => {
-        console.log(error);
         setDisableCreate(false);
         setGroupNameExits(false);
       });
diff --git a/jams-react-client/src/views/UserProfile/DisplayUserProfile.js b/jams-react-client/src/views/UserProfile/DisplayUserProfile.js
index 282ff263..e50cf22c 100644
--- a/jams-react-client/src/views/UserProfile/DisplayUserProfile.js
+++ b/jams-react-client/src/views/UserProfile/DisplayUserProfile.js
@@ -243,7 +243,6 @@ export default function DisplayUserProfile(props) {
             history.push("/");
           }else {
             setGroups([]);
-            console.log(error.response);
           }
         } else {
           setGroups([]);
@@ -344,10 +343,9 @@ export default function DisplayUserProfile(props) {
                   });
                   setGroupMemberships(userGroupsData);
                 }).catch((error) => {
-                  console.log(error);
                   if (error.response.status === 401) {
                     auth.authenticated = false;
-                    history.push("/");
+                    history.push("/signin");
                   }
                   if (error.response.status === 404) {
                     setGroupMemberships([]);
@@ -357,11 +355,17 @@ export default function DisplayUserProfile(props) {
                 setLoading(false);
               })
               .catch((error) => {
-                console.log(error);
+                if (error.response.status === 401) {
+                  auth.authenticated = false;
+                  history.push("/signin");
+                }
               });
           })
           .catch((error) => {
-            console.log(error);
+            if (error.response.status === 401) {
+              auth.authenticated = false;
+              history.push("/signin");
+            }
           });
       } else {
         axios(
@@ -400,10 +404,9 @@ export default function DisplayUserProfile(props) {
                   });
                   setGroupMemberships(userGroupsData);
                 }).catch((error) => {
-                  console.log(error);
                   if (error.response.status === 401) {
                     auth.authenticated = false;
-                    history.push("/");
+                    history.push("/signin");
                   }
                   if (error.response.status === 404) {
                     setGroupMemberships([]);
@@ -412,11 +415,17 @@ export default function DisplayUserProfile(props) {
                 setLoading(false);
               })
               .catch((error) => {
-                console.log(error);
+                if (error.response.status === 401) {
+                  auth.authenticated = false;
+                  history.push("/signin");
+                }
               });
           })
           .catch((error) => {
-            console.log(error);
+            if (error.response.status === 401) {
+              auth.authenticated = false;
+              history.push("/signin");
+            }
           });
       }
     });
diff --git a/jams-react-client/src/views/Users/Users.js b/jams-react-client/src/views/Users/Users.js
index ee96a21f..9a92182e 100644
--- a/jams-react-client/src/views/Users/Users.js
+++ b/jams-react-client/src/views/Users/Users.js
@@ -119,7 +119,7 @@ export default function Users(props) {
         setLoading(false);
         if (error.response.status === 401) {
           auth.authenticated = false;
-          history.push("/");
+          history.push("/signin");
         }
       });
     return () => {
@@ -155,7 +155,7 @@ export default function Users(props) {
         setLoading(false);
         if (error.response.status === 401) {
           auth.authenticated = false;
-          history.push("/");
+          history.push("/signin");
         }
       });
   };
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/LoginServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/LoginServlet.java
index 93c156dc..4daadce5 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/LoginServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/LoginServlet.java
@@ -95,6 +95,7 @@ public class LoginServlet extends HttpServlet {
                 }
             }
         }
+        resp.setContentType("application/json;charset=UTF-8");
         if (res == null)
             TomcatCustomErrorHandler.sendCustomError(resp, 401, "Invalid credentials provided!");
         else
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/AddressServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/AddressServlet.java
index 758148c1..2cab1704 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/AddressServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/AddressServlet.java
@@ -63,6 +63,7 @@ public class AddressServlet extends HttpServlet {
         JSONObject obj = new JSONObject();
         obj.put("name", username);
 
+        resp.setContentType("application/json;charset=UTF-8");
         if (username == null) TomcatCustomErrorHandler.sendCustomError(resp,404,"Address not found!");
         else resp.getWriter().write(obj.toString());
     }
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/NameServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/NameServlet.java
index 96a253a1..b2dec3b8 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/NameServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/NameServlet.java
@@ -58,6 +58,7 @@ public class NameServlet extends HttpServlet {
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         NameLookupResponse nameLookupResponse = nameServer.getAddressFromName(req.getPathInfo().replace("/",""));
+        resp.setContentType("application/json;charset=UTF-8");
         if(nameLookupResponse == null) TomcatCustomErrorHandler.sendCustomError(resp,404,"name not found");
         else resp.getOutputStream().write(JsonStream.serialize(nameLookupResponse).getBytes());
     }
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/ApiFilter.java b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/ApiFilter.java
index da079d0f..6adbcb27 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/ApiFilter.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/ApiFilter.java
@@ -51,6 +51,7 @@ public class ApiFilter implements Filter {
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
         HttpServletRequest request = (HttpServletRequest) servletRequest;
         HttpServletResponse response = (HttpServletResponse) servletResponse;
+        response.setContentType("application/json;charset=UTF-8");
         if (!Server.isInstalled.get()) {
             TomcatCustomErrorHandler.sendCustomError(response,404,"Setup has not yet been completed!");
         } else {
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/InstallFilter.java b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/InstallFilter.java
index 478fe16c..3d57e902 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/InstallFilter.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/InstallFilter.java
@@ -46,6 +46,7 @@ public class InstallFilter implements Filter {
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
         HttpServletRequest request = (HttpServletRequest) servletRequest;
         HttpServletResponse response = (HttpServletResponse) servletResponse;
+        response.setContentType("application/json;charset=UTF-8");
         if(Server.isInstalled.get()){
             TomcatCustomErrorHandler.sendCustomError(response,404,"The server is already installed");
         }
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/general/ServerStatusServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/general/ServerStatusServlet.java
index 08fb9155..e84c41e3 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/general/ServerStatusServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/general/ServerStatusServlet.java
@@ -41,6 +41,7 @@ public class ServerStatusServlet extends HttpServlet {
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        HashMap<String,String> statusInfo = new HashMap<>();
         statusInfo.put("installed",String.valueOf(Server.isInstalled.get()));
+        resp.setContentType("application/json;charset=UTF-8");
         resp.getOutputStream().write(JsonStream.serialize(statusInfo).getBytes());
     }
 }
-- 
GitLab