From 0cbe4d0b0429e7dd390571d004b47eca993684ce Mon Sep 17 00:00:00 2001
From: Timothy Carambat <rambat1010@gmail.com>
Date: Thu, 12 Sep 2024 13:33:41 -0700
Subject: [PATCH] Make `userId` actually optional for workspaceThread endpoint
 (#2276)

---
 server/endpoints/api/workspaceThread/index.js | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/server/endpoints/api/workspaceThread/index.js b/server/endpoints/api/workspaceThread/index.js
index 66c3a6844..e7f53698a 100644
--- a/server/endpoints/api/workspaceThread/index.js
+++ b/server/endpoints/api/workspaceThread/index.js
@@ -3,10 +3,7 @@ const { WorkspaceThread } = require("../../../models/workspaceThread");
 const { Workspace } = require("../../../models/workspace");
 const { validApiKey } = require("../../../utils/middleware/validApiKey");
 const { reqBody, multiUserMode } = require("../../../utils/http");
-const {
-  streamChatWithWorkspace,
-  VALID_CHAT_MODE,
-} = require("../../../utils/chats/stream");
+const { VALID_CHAT_MODE } = require("../../../utils/chats/stream");
 const { Telemetry } = require("../../../models/telemetry");
 const { EventLogs } = require("../../../models/eventLogs");
 const {
@@ -71,7 +68,7 @@ function apiWorkspaceThreadEndpoints(app) {
       */
       try {
         const { slug } = request.params;
-        const { userId } = reqBody(request);
+        let { userId = null } = reqBody(request);
         const workspace = await Workspace.get({ slug });
 
         if (!workspace) {
@@ -79,6 +76,11 @@ function apiWorkspaceThreadEndpoints(app) {
           return;
         }
 
+        // If the system is not multi-user and you pass in a userId
+        // it needs to be nullified as no users exist. This can still fail validation
+        // as we don't check if the userID is valid.
+        if (!response.locals.multiUserMode && !!userId) userId = null;
+
         const { thread, message } = await WorkspaceThread.new(
           workspace,
           userId ? Number(userId) : null
-- 
GitLab