chore: Add more comments and user messages to create-user cmd

This commit is contained in:
LaraClara 2023-06-12 18:37:21 +10:00 committed by Danny Avila
parent 87fa9f9ab0
commit 60bcd7ae49

View file

@ -10,21 +10,48 @@ const silentExit = (code = 0) => {
} }
(async () => { (async () => {
/**
* 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...') console.orange('Warming up the engines...')
await connectDb(); await connectDb();
clearTimeout(timeout);
await migrateDb(); await migrateDb();
// Okay lets show the user some information about what we are doing } catch (e) {
console.error(e);
silentExit(1);
}
/**
* Show the welcome / help menu
*/
console.purple('--------------------------') console.purple('--------------------------')
console.purple('Setup a new user account!') console.purple('Create a new user account!')
console.purple('--------------------------') 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 <email> <name> <username>') console.orange('Usage: npm run create-user <email> <name> <username>')
console.orange('Note: if you do not pass in the arguments, you will be prompted for them.') 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.orange('If you really need to pass in the password, you can do so as the 4th argument (not recommended for security).')
console.purple('--------------------------') console.purple('--------------------------')
}
// These will be passed as arguments to the console /**
// node config/create-user.js <name> <email> <username> * Set up the variables we need and get the arguments if they were passed in
// lets set them up as variables with some defaults */
let email = ''; let email = '';
let password = ''; let password = '';
let name = ''; let name = '';
@ -42,6 +69,10 @@ const silentExit = (code = 0) => {
password = process.argv[5]; password = process.argv[5];
} }
} }
/**
* If we don't have the right number of arguments, lets prompt the user for them
*/
if (!email) { if (!email) {
email = await askQuestion('Email:'); email = await askQuestion('Email:');
} }
@ -73,16 +104,17 @@ const silentExit = (code = 0) => {
} }
} }
// Validate the user doesn't already exist
const user = { email, password, name, username, confirm_password: password };
// Let's check if the email or username already exists
const userExists = await User.findOne({ $or: [{ email }, { username }] }); const userExists = await User.findOne({ $or: [{ email }, { username }] });
if (userExists) { if (userExists) {
console.red('Error: A user with that email or username already exists!'); console.red('Error: A user with that email or username already exists!');
silentExit(1); 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; let result;
try { try {
result = await registerUser(user); result = await registerUser(user);