From 60bcd7ae49261ba9cb7a3f665359194db53bf839 Mon Sep 17 00:00:00 2001 From: LaraClara Date: Mon, 12 Jun 2023 18:37:21 +1000 Subject: [PATCH] chore: Add more comments and user messages to create-user cmd --- config/create-user.js | 68 +++++++++++++++++++++++++++++++------------ 1 file changed, 50 insertions(+), 18 deletions(-) diff --git a/config/create-user.js b/config/create-user.js index c8f0ffcaf5..b9cb9c5cdf 100644 --- a/config/create-user.js +++ b/config/create-user.js @@ -10,21 +10,48 @@ const silentExit = (code = 0) => { } (async () => { - console.orange('Warming up the engines...') - await connectDb(); - await migrateDb(); - // Okay lets show the user some information about what we are doing - console.purple('--------------------------') - console.purple('Setup a new user account!') - console.purple('--------------------------') - console.orange('Usage: npm run create-user ') - console.orange('Note: if you do not pass in the arguments, you will be prompted for them.') - console.orange('If you really need to pass in the password, you can do so as the 4th argument (not recommended for security).') - console.purple('--------------------------') + /** + * Connect to the database + * - If it takes a while, we'll warn the user + */ + // Warn the user if this is taking a while + let timeout = setTimeout(() => { + console.orange('This is taking a while... You may need to check your connection if this fails.'); + timeout = setTimeout(() => { + console.orange('Still going... Might as well assume the connection failed...'); + timeout = setTimeout(() => { + console.orange('Error incoming in 3... 2... 1...'); + }, 13000); + }, 10000); + }, 5000); + // Attempt to connect to the database + try { + console.orange('Warming up the engines...') + await connectDb(); + clearTimeout(timeout); + await migrateDb(); + } catch (e) { + console.error(e); + silentExit(1); + } - // These will be passed as arguments to the console - // node config/create-user.js - // lets set them up as variables with some defaults + /** + * Show the welcome / help menu + */ + console.purple('--------------------------') + console.purple('Create a new user account!') + console.purple('--------------------------') + // If we don't have enough arguments, show the help menu + if (process.argv.length < 5) { + console.orange('Usage: npm run create-user ') + console.orange('Note: if you do not pass in the arguments, you will be prompted for them.') + console.orange('If you really need to pass in the password, you can do so as the 4th argument (not recommended for security).') + console.purple('--------------------------') + } + + /** + * Set up the variables we need and get the arguments if they were passed in + */ let email = ''; let password = ''; let name = ''; @@ -42,6 +69,10 @@ const silentExit = (code = 0) => { password = process.argv[5]; } } + + /** + * If we don't have the right number of arguments, lets prompt the user for them + */ if (!email) { email = await askQuestion('Email:'); } @@ -73,16 +104,17 @@ const silentExit = (code = 0) => { } } - - const user = { email, password, name, username, confirm_password: password }; - // Let's check if the email or username already exists + // Validate the user doesn't already exist const userExists = await User.findOne({ $or: [{ email }, { username }] }); if (userExists) { console.red('Error: A user with that email or username already exists!'); silentExit(1); } - // Now lets register the user + /** + * Now that we have all the variables we need, lets create the user + */ + const user = { email, password, name, username, confirm_password: password }; let result; try { result = await registerUser(user);