diff --git a/controllers/bonfire.js b/controllers/bonfire.js index 6df65368e8..3bf4b48150 100644 --- a/controllers/bonfire.js +++ b/controllers/bonfire.js @@ -36,7 +36,7 @@ exports.index = function(req, res) { }); }; -exports.returnNextBonfire = function(req, res) { +exports.returnNextBonfire = function(req, res, next) { if (!req.user) { return res.redirect('../bonfires/meet-bonfire'); } @@ -49,24 +49,24 @@ exports.returnNextBonfire = function(req, res) { return elem; } }); - req.user.save(); - - var uncompletedBonfires = req.user.uncompletedBonfires; - - var displayedBonfires = Bonfire.find({'_id': uncompletedBonfires[0]}); - displayedBonfires.exec(function(err, bonfire) { - if (err) { - next(err); - } - bonfire = bonfire.pop(); - if (bonfire === undefined) { - req.flash('errors', { - msg: "It looks like you've completed all the bonfires we have available. Good job!" - }); - return res.redirect('../bonfires/meet-bonfire'); - } - nameString = bonfire.name.toLowerCase().replace(/\s/g, '-'); - return res.redirect('../bonfires/' + nameString); + req.user.save(function(err) { + if (err) return next(err); + var uncompletedBonfires = req.user.uncompletedBonfires; + var displayedBonfires = Bonfire.find({'_id': uncompletedBonfires[0]}); + displayedBonfires.exec(function(err, bonfire) { + if (err) { + return next(err); + } + bonfire = bonfire.pop(); + if (bonfire === undefined) { + req.flash('errors', { + msg: "It looks like you've completed all the bonfires we have available. Good job!" + }); + return res.redirect('../bonfires/meet-bonfire'); + } + nameString = bonfire.name.toLowerCase().replace(/\s/g, '-'); + return res.redirect('../bonfires/' + nameString); + }); }); }; @@ -77,7 +77,7 @@ exports.returnIndividualBonfire = function(req, res, next) { Bonfire.find({"name" : new RegExp(bonfireName, 'i')}, function(err, bonfire) { if (err) { - next(err); + return next(err); } @@ -235,7 +235,7 @@ exports.generateChallenge = function(req, res) { res.send(response); }; -exports.completedBonfire = function (req, res) { +exports.completedBonfire = function (req, res, next) { var isCompletedWith = req.body.bonfireInfo.completedWith || undefined; var isCompletedDate = Math.round(+new Date() / 1000); var bonfireHash = req.body.bonfireInfo.bonfireHash; @@ -245,7 +245,7 @@ exports.completedBonfire = function (req, res) { var paired = User.find({"profile.username": isCompletedWith.toLowerCase()}).limit(1); paired.exec(function (err, pairedWith) { if (err) { - return err; + return next(err); } else { var index = req.user.uncompletedBonfires.indexOf(bonfireHash); if (index > -1) { @@ -276,9 +276,12 @@ exports.completedBonfire = function (req, res) { }) req.user.save(function (err, user) { + if (err) { + return next(err); + } pairedWith.save(function (err, paired) { if (err) { - throw err; + return next(err); } if (user && paired) { res.send(true); @@ -304,7 +307,7 @@ exports.completedBonfire = function (req, res) { req.user.save(function (err, user) { if (err) { - throw err; + return next(err); } if (user) { debug('Saving user'); @@ -312,4 +315,4 @@ exports.completedBonfire = function (req, res) { } }); } -}; \ No newline at end of file +}; diff --git a/controllers/challenges.js b/controllers/challenges.js index 566a3c1fda..4461f3d0a0 100644 --- a/controllers/challenges.js +++ b/controllers/challenges.js @@ -27,7 +27,7 @@ exports.returnNextChallenge = function(req, res) { } }; -exports.returnChallenge = function(req, res) { +exports.returnChallenge = function(req, res, next) { var challengeNumber = parseInt(req.params.challengeNumber) || 0; if (challengeNumber === 2) { req.user.challengesHash[challengeNumber] = Math.round(+new Date() / 1000); @@ -55,7 +55,7 @@ exports.returnChallenge = function(req, res) { Challenge.find({}, null, { sort: { challengeNumber: 1 } }, function(err, c) { if (err) { debug('Challenge err: ', err); - next(err); + return next(err); } res.render('challenges/show', { title: 'Challenge: ' + c[challengeNumber].name, diff --git a/controllers/courseware.js b/controllers/courseware.js index b0f89b1116..0930bf2b90 100644 --- a/controllers/courseware.js +++ b/controllers/courseware.js @@ -52,7 +52,7 @@ exports.returnNextCourseware = function(req, res, next) { }); }); - + }; exports.returnIndividualCourseware = function(req, res, next) { @@ -234,4 +234,4 @@ exports.completedCourseware = function (req, res, next) { res.send(true) } }); -}; \ No newline at end of file +}; diff --git a/controllers/resources.js b/controllers/resources.js index 0d8c0e5d55..94d0ece557 100644 --- a/controllers/resources.js +++ b/controllers/resources.js @@ -175,7 +175,9 @@ module.exports = { if (req.user) { if (!req.user.profile.picture || req.user.profile.picture === "https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-180x180.png") { req.user.profile.picture = "https://s3.amazonaws.com/freecodecamp/camper-image-placeholder.png"; - req.user.save(); + req.user.save(function(err) { + if (err) return next(err); + }); } } var date1 = new Date("10/15/2014"); diff --git a/controllers/user.js b/controllers/user.js index 20fda23b1a..5b0d2a9bb4 100644 --- a/controllers/user.js +++ b/controllers/user.js @@ -179,7 +179,7 @@ exports.postEmailSignup = function(req, res, next) { ].join('') }; transporter.sendMail(mailOptions, function(err) { - if (err) { return err; } + if (err) { return next(err); } }); }); }); @@ -210,8 +210,9 @@ exports.getAccountAngular = function(req, res) { * Unique username check API Call */ -exports.checkUniqueUsername = function(req, res) { +exports.checkUniqueUsername = function(req, res, next) { User.count({'profile.username': req.params.username.toLowerCase()}, function (err, data) { + if (err) { return next(err); } if (data == 1) { return res.send(true); } else { @@ -223,8 +224,9 @@ exports.checkUniqueUsername = function(req, res) { /** * Existing username check */ -exports.checkExistingUsername = function(req, res) { +exports.checkExistingUsername = function(req, res, next) { User.count({'profile.username': req.params.username.toLowerCase()}, function (err, data) { + if (err) { return next(err); } if (data === 1) { return res.send(true); } else { @@ -237,8 +239,9 @@ exports.checkExistingUsername = function(req, res) { * Unique email check API Call */ -exports.checkUniqueEmail = function(req, res) { +exports.checkUniqueEmail = function(req, res, next) { User.count({'email': decodeURIComponent(req.params.email).toLowerCase()}, function (err, data) { + if (err) { return next(err); } if (data == 1) { return res.send(true); } else { @@ -255,10 +258,11 @@ exports.checkUniqueEmail = function(req, res) { exports.returnUser = function(req, res, next) { User.find({'profile.username': req.params.username.toLowerCase()}, function(err, user) { - if (err) { debug('Username err: ', err); next(err); } + if (err) { debug('Username err: ', err); return next(err); } if (user[0]) { var user = user[0]; Challenge.find({}, null, {sort: {challengeNumber: 1}}, function (err, c) { + if (err) { return next(err); } res.render('account/show', { title: 'Camper ' + user.profile.username + '\'s portfolio', username: user.profile.username, @@ -300,7 +304,7 @@ exports.returnUser = function(req, res, next) { * Update profile information. */ -exports.updateProgress = function(req, res) { +exports.updateProgress = function(req, res, next) { User.findById(req.user.id, function(err, user) { if (err) return next(err); user.email = req.body.email || ''; @@ -471,7 +475,7 @@ exports.getOauthUnlink = function(req, res, next) { * Reset Password page. */ -exports.getReset = function(req, res) { +exports.getReset = function(req, res, next) { if (req.isAuthenticated()) { return res.redirect('/'); }