diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/user/LocalUserExistsServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/user/LocalUserExistsServlet.java
new file mode 100644
index 0000000000000000000000000000000000000000..5313cd79d72265f002dc14143070480000abc62f
--- /dev/null
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/user/LocalUserExistsServlet.java
@@ -0,0 +1,75 @@
+package net.jami.jams.server.servlets.api.user;
+
+import com.jsoniter.JsonIterator;
+import com.jsoniter.any.Any;
+import com.jsoniter.output.JsonStream;
+import lombok.extern.slf4j.Slf4j;
+import net.jami.jams.ca.JamsCA;
+import net.jami.jams.common.authentication.AuthenticationSourceType;
+import net.jami.jams.common.dao.StatementElement;
+import net.jami.jams.common.dao.StatementList;
+import net.jami.jams.common.objects.user.User;
+import net.jami.jams.server.Server;
+
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+
+@WebServlet("/api/user/exists")
+@Slf4j
+public class LocalUserExistsServlet extends HttpServlet {
+
+
+    @Override
+    protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
+        resp.setHeader("Access-Control-Allow-Origin", JamsCA.serverDomain);
+        resp.setContentType("application/json");
+        StringBuilder stringBuilder = new StringBuilder();
+
+        try {
+            int x = 0;
+            while (true) {
+                x = req.getInputStream().read();
+                if(x == -1) break;
+                stringBuilder.append((char) x);
+            }
+        }
+        catch (Exception e) {
+            log.error("error decoding request body");
+        }
+
+
+        if(stringBuilder.toString() != null) {
+
+            Any userData = JsonIterator.deserialize(stringBuilder.toString());
+            String username = userData.get("username").toString();
+            try {
+                    if (Server.dataStore.userExists(username)) {
+
+                        StatementList statementList = new StatementList();
+                        StatementElement statementElement = new StatementElement("username", "=", username, "");
+                        statementList.addStatement(statementElement);
+                        User user = Server.dataStore.getUserDao().getObjects(statementList).get(0);
+
+                        if (user != null && user.getUserType() == AuthenticationSourceType.LOCAL) {
+                            resp.setStatus(200);
+                            HashMap<String, String> statusInfo = new HashMap<>();
+                            statusInfo.put("exists", "true");
+                            resp.getOutputStream().write(JsonStream.serialize(statusInfo).getBytes());
+                        } else {
+                            resp.setStatus(500);
+                            HashMap<String, String> statusInfo = new HashMap<>();
+                            statusInfo.put("exists", "false");
+                            resp.getOutputStream().write(JsonStream.serialize(statusInfo).getBytes());
+                        }
+                    }
+
+            } catch (Exception e) {
+                log.info(e.toString());
+                resp.setStatus(500);
+            }
+        }
+    }
+}
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/user/LocalUserNeedsResetServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/user/LocalUserNeedsResetServlet.java
index 540de412673ffbd3c400c73bb45e97e733f94e68..9650dd8234ced5c776c648474bce2711067077cc 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/user/LocalUserNeedsResetServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/user/LocalUserNeedsResetServlet.java
@@ -11,7 +11,7 @@ import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.objects.user.User;
 import net.jami.jams.server.Server;
 import net.jami.jams.server.servlets.api.install.CachedObjects;
-import org.apache.catalina.webresources.CachedResource;
+import net.jami.jams.common.authentication.AuthenticationSourceType;
 
 import javax.servlet.annotation.WebServlet;
 import javax.servlet.http.HttpServlet;
@@ -51,7 +51,6 @@ public class LocalUserNeedsResetServlet extends HttpServlet {
                 if (CachedObjects.localAuthSettings != null && req.getParameterMap().containsKey("username")) {
 
                     HashMap<String,String> statusInfo = new HashMap<>();
-                    LocalAuthSettings settings = CachedObjects.localAuthSettings;
                     String username = req.getParameter("username");
 
                     if(Server.dataStore.userExists(username)){
@@ -60,7 +59,7 @@ public class LocalUserNeedsResetServlet extends HttpServlet {
                         statementList.addStatement(statementElement);
                         User user = Server.dataStore.getUserDao().getObjects(statementList).get(0);
 
-                        if (user.getNeedsPasswordReset()) {
+                        if (user != null && user.getNeedsPasswordReset() && user.getUserType() ==  AuthenticationSourceType.LOCAL) {
                             // show the OTP modal
                             char[] otp = Server.userAuthenticationModule.getOTP(req.getParameter("username"));
                             statusInfo.put("needsReset", "true");