From 1dad4d9409ceee01f4b34b982b1d0db624228c56 Mon Sep 17 00:00:00 2001
From: Sean Hatfield <seanhatfield5@gmail.com>
Date: Fri, 16 Aug 2024 12:55:14 -0700
Subject: [PATCH] Fix multi-user setup bug for invalid username/password
 (#2130)

* fix multiuser setup bug for invalid username/password

* handle user creation failed gracefully and delete user on fail
---
 .../src/pages/OnboardingFlow/Steps/UserSetup/index.jsx | 10 +++++++---
 server/endpoints/system.js                             |  9 +++++++++
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/frontend/src/pages/OnboardingFlow/Steps/UserSetup/index.jsx b/frontend/src/pages/OnboardingFlow/Steps/UserSetup/index.jsx
index 7e938076a..04625abf4 100644
--- a/frontend/src/pages/OnboardingFlow/Steps/UserSetup/index.jsx
+++ b/frontend/src/pages/OnboardingFlow/Steps/UserSetup/index.jsx
@@ -288,6 +288,11 @@ const MyTeam = ({ setMultiUserLoginValid, myTeamSubmitRef, navigate }) => {
                   onChange={handleUsernameChange}
                 />
               </div>
+              <p className=" text-white text-opacity-80 text-xs font-base">
+                Username must be at least 6 characters long and only contain
+                lowercase letters, numbers, underscores, and hyphens with no
+                spaces.
+              </p>
               <div className="mt-4">
                 <label
                   htmlFor="name"
@@ -306,9 +311,8 @@ const MyTeam = ({ setMultiUserLoginValid, myTeamSubmitRef, navigate }) => {
                   onChange={handlePasswordChange}
                 />
               </div>
-              <p className="w-96 text-white text-opacity-80 text-xs font-base">
-                Username must be at least 6 characters long. Password must be at
-                least 8 characters long.
+              <p className=" text-white text-opacity-80 text-xs font-base">
+                Password must be at least 8 characters long.
               </p>
             </div>
           </div>
diff --git a/server/endpoints/system.js b/server/endpoints/system.js
index 2b5e5c01b..d49765d40 100644
--- a/server/endpoints/system.js
+++ b/server/endpoints/system.js
@@ -481,6 +481,15 @@ function systemEndpoints(app) {
           password,
           role: ROLES.admin,
         });
+
+        if (error || !user) {
+          response.status(400).json({
+            success: false,
+            error: error || "Failed to enable multi-user mode.",
+          });
+          return;
+        }
+
         await SystemSettings._updateSettings({
           multi_user_mode: true,
           limit_user_messages: false,
-- 
GitLab