From eda5ece2dd5852b6a305612e1000f4a3bc52cd5b Mon Sep 17 00:00:00 2001 From: Evan Ugarte Date: Sat, 8 Feb 2025 16:37:52 -0800 Subject: [PATCH] Un-nest user registration logic --- api/main_endpoints/routes/Auth.js | 18 +++---- api/main_endpoints/util/userHelpers.js | 70 ++++++++++++++------------ 2 files changed, 45 insertions(+), 43 deletions(-) diff --git a/api/main_endpoints/routes/Auth.js b/api/main_endpoints/routes/Auth.js index 575e7b065..224b8c36d 100644 --- a/api/main_endpoints/routes/Auth.js +++ b/api/main_endpoints/routes/Auth.js @@ -33,19 +33,17 @@ const { userWithEmailExists, checkIfPageCountResets, findPasswordReset } = requi // Register a member router.post('/register', async (req, res) => { const registrationStatus = await registerUser(req.body); - if (!registrationStatus.userSaved) { - if (registrationStatus.status === 'BAD_REQUEST') { - return res.status(BAD_REQUEST).send({ - message: registrationStatus.message - }); - } else { - res.status(CONFLICT).send({ message: registrationStatus.message }); - } - } else { + if (registrationStatus.userSaved) { const name = req.body.firstName + ' ' + req.body.lastName; sendVerificationEmail(name, req.body.email); - res.sendStatus(OK); + return res.sendStatus(OK); + } + if (registrationStatus.status === 'BAD_REQUEST') { + return res.status(BAD_REQUEST).send({ + message: registrationStatus.message + }); } + return res.status(CONFLICT).send({ message: registrationStatus.message }); }); router.post('/resendVerificationEmail', async (req, res) => { diff --git a/api/main_endpoints/util/userHelpers.js b/api/main_endpoints/util/userHelpers.js index 605aaa554..925fdb39b 100644 --- a/api/main_endpoints/util/userHelpers.js +++ b/api/main_endpoints/util/userHelpers.js @@ -92,46 +92,50 @@ async function registerUser(userToAdd) { return result; } } - if (userToAdd.email && userToAdd.password) { - const newUser = new User({ - password: userToAdd.password, - firstName: userToAdd.firstName, - middleInitial: userToAdd.middleInitial || '', - lastName: userToAdd.lastName, - email: userToAdd.email.toLowerCase(), - major: userToAdd.major || '' - }); + if (!userToAdd.email || !userToAdd.password) { + result.userSaved = false; + result.message = 'Missing email and password.'; + result.status = 'BAD_REQUEST'; + return result; + } - const membershipValidUntil = getMemberExpirationDate( - userToAdd.numberOfSemestersToSignUpFor - ); - newUser.membershipValidUntil = membershipValidUntil; + const newUser = new User({ + password: userToAdd.password, + firstName: userToAdd.firstName, + middleInitial: userToAdd.middleInitial || '', + lastName: userToAdd.lastName, + email: userToAdd.email.toLowerCase(), + major: userToAdd.major || '' + }); - const testPassword = testPasswordStrength(userToAdd.password); + const membershipValidUntil = getMemberExpirationDate( + userToAdd.numberOfSemestersToSignUpFor + ); + newUser.membershipValidUntil = membershipValidUntil; - if (!testPassword.success) { - result.userSaved = false; - result.message = testPassword.message; - result.status = 'BAD_REQUEST'; - return result; - } + const testPassword = testPasswordStrength(userToAdd.password); - await newUser.save() - .catch(e => { - logger.error('Error saving user:', e); - result.userSaved = false; - result.message = 'Failed creating account.'; - if (e.code === 11000) { - result.message = 'Username already exists.'; - } - result.status = 'CONFLICT'; - }); - } else { + if (!testPassword.success) { result.userSaved = false; - result.message = 'Missing email and password.'; + result.message = testPassword.message; + result.status = 'BAD_REQUEST'; + return result; + } + + try { + await newUser.save(); + } catch (error) { + logger.error('Error saving user:', error); result.status = 'BAD_REQUEST'; + result.userSaved = false; + result.message = 'Failed creating account.'; + if (error.code === 11000) { + result.message = 'Username already exists.'; + result.status = 'CONFLICT'; + } + } finally { + return result; } - return result; } function userWithEmailExists(email) {