From bffdd3255081313c0b7a4a3c271b2a5c4964185b Mon Sep 17 00:00:00 2001 From: Adrian Obelmejias Date: Thu, 11 Feb 2016 19:20:45 -0500 Subject: [PATCH] Use promises for flatter code --- src/models/users.js | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/models/users.js b/src/models/users.js index dccf3b4..ef10248 100644 --- a/src/models/users.js +++ b/src/models/users.js @@ -9,36 +9,43 @@ const User = new mongoose.Schema({ salt: { type: String } }) -User.pre('save', function(next) { +User.pre('save', function preSave(next) { const user = this - if(!user.isModified('password')) { + if (!user.isModified('password')) { return next() } - bcrypt.genSalt(10, (err, salt) => { - if(err) { return next(err) } - + new Promise((resolve, reject) => { + bcrypt.genSalt(10, (err, salt) => { + if (err) { return reject(err) } + return salt + }) + }) + .then(salt => { bcrypt.hash(user.password, salt, (err, hash) => { - if(err) { return next(err) } + if (err) { throw new Error(err) } user.password = hash user.salt = salt - next() + return user }) }) + .then(() => { + next() + }) }) -User.methods.validatePassword = function(password) { +User.methods.validatePassword = function validatePassword(password) { const user = this return new Promise((resolve, reject) => { bcrypt.compare(password, user.password, (err, isMatch) => { - if(err) { return reject(err) } + if (err) { return reject(err) } resolve(isMatch) - }); + }) }) -}; +} export default mongoose.model('user', User)