#50 Added many promises

master
Keith Irwin 2017-04-20 23:07:35 -04:00
parent 14f3d18d5c
commit f7d2fd3482
No known key found for this signature in database
GPG Key ID: 378933C743E2BBC0
9 changed files with 78 additions and 57 deletions

View File

@ -56,7 +56,6 @@ const userSchema = new mongoose.Schema({
.then( (buf)=>{
user.emailToken = buf.toString('hex');
user.save();
return next(null,user.emailToken);
})
.catch( (err)=>{ next(err,null); });
@ -78,8 +77,13 @@ const userSchema = new mongoose.Schema({
// Reuse old token, resetting clock
if ( user.auth.passTokenExpires <= Date.now() ){
user.auth.passTokenExpires = Date.now() + 3600000; // 1 hour
user.save();
return next(null,user.auth.passToken);
user.save()
.then( ()=>{
return next(null,user.auth.passToken);
})
.catch( (err)=>{
return next(err,user.auth.passToken);
});
}
// Create new token
@ -89,7 +93,6 @@ const userSchema = new mongoose.Schema({
user.auth.passToken = buf.toString('hex');
user.auth.passTokenExpires = Date.now() + 3600000; // 1 hour
user.save();
return next(null,user.auth.passToken);
})
.catch( (err)=>{ return next(err,null); });
}

View File

@ -31,8 +31,8 @@ module.exports = (passport)=>{
passwordField: 'password',
passReqToCallback: true
}, (req,email,password,done)=>{
User.findOne( {'email':email}, (err,user)=>{
if (err){ return done(err); }
User.findOne({'email':email})
.then( (user)=>{
// No user with that email
if (!user) {
@ -62,7 +62,11 @@ module.exports = (passport)=>{
} );
}
} );
})
.catch( (err)=>{
return done(err);
});
}
));
@ -168,7 +172,6 @@ module.exports = (passport)=>{
return done(null,req.user);
} )
.catch( (err)=>{
mw.throwErr(err);
return done(err);
} );
}

View File

@ -12,25 +12,33 @@ router.route('/')
.get( (req,res)=>{
User.find({}).sort({lastLogin:-1})
.catch( (err)=>{
mw.throwErr(err);
}).then( (found)=>{
.then( (found)=>{
res.render('admin', {
noFooter: '1',
users: found
});
});
})
.catch( (err)=>{ mw.throwErr(err,req); });
} )
.post( (req,res,next)=>{
if (req.body.delete) {
User.findOneAndRemove( {'_id':req.body.delete}, (err,user)=>{
if (err){ req.flash('error', err.message); }
else { req.flash('success', '<i>'+user.name+'</i> deleted.'); }
User.findOneAndRemove({'_id':req.body.delete})
.then( (user)=>{
req.flash('success', '<i>'+user.name+'</i> deleted.');
res.redirect('/admin#users');
} );
} else { console.error(new Error('POST without action sent. ')); next(); }
})
.catch( (err)=>{
mw.throwErr(err,req);
res.redirect('/admin#users');
});
}
else {
let err = new Error('POST without action sent. ');
err.status = 500;
next();
}
} );
module.exports = router;

View File

@ -123,10 +123,14 @@ module.exports = (app, passport) => {
// Slug in use: generate a random one and retry
if (existingUser){
crypto.randomBytes(6, (err,buf)=>{
if (err) { mw.throwErr(err,req); }
crypto.randomBytes(6)
.then( (buf)=>{
s = buf.toString('hex');
checkSlug(s,cb);
})
.catch( (err)=>{
mw.throwErr(err,req);
reject();
});
}
@ -136,6 +140,7 @@ module.exports = (app, passport) => {
})
.catch((err)=>{
mw.throwErr(err,req);
reject();
});
})(user.slug, (newSlug)=>{
@ -146,10 +151,14 @@ module.exports = (app, passport) => {
// Generate sk32
let sk32 = new Promise((resolve,reject) => {
crypto.randomBytes(32, (err,buf)=>{
if (err) { mw.throwErr(err,req); }
crypto.randomBytes(32)
.then( (buf)=>{
user.sk32 = buf.toString('hex');
resolve();
})
.catch( (err)=>{
mw.throwErr(err,req);
reject();
});
});
@ -158,9 +167,9 @@ module.exports = (app, passport) => {
.then( ()=>{ user.save(); })
.then( ()=>{ sendToken(user); })
.catch( (err)=>{
mw.throwErr(err,req);
res.redirect('/login#signup');
});
mw.throwErr(err,req);
res.redirect('/login#signup');
});
}

View File

@ -49,7 +49,7 @@ router.get('/validate', (req,res)=>{
}
else { res.sendStatus(200); }
})
.catch( (err)=>{ mw.throwErr(err); });
.catch( (err)=>{ mw.throwErr(err,req); });
}
// Validate unique email
@ -61,7 +61,7 @@ router.get('/validate', (req,res)=>{
}
else { res.sendStatus(200); }
})
.catch( (err)=>{ mw.throwErr(err); });
.catch( (err)=>{ mw.throwErr(err,req); });
}
// Create slug

View File

@ -132,16 +132,15 @@ router.get('/email/:token', mw.ensureAuth, (req,res,next)=>{
req.user.email = req.user.newEmail;
req.user.save()
.then( ()=>{
// Delete token and newEmail
req.user.emailToken = undefined;
req.user.newEmail = undefined;
req.user.save();
})
.then( ()=>{
// Report success
req.flash('success',`Your email has been set to <u>${req.user.email}</u>. `);
res.redirect('/settings');
})
.catch( (err)=>{
mw.throwErr(err,req);
@ -249,14 +248,14 @@ router.route('/password/:token')
// Save new password to db
res.locals.passwordUser.auth.password = hash;
res.locals.passwordUser.save()
.then( ()=>{
req.flash('success', 'Password set. You can use it to log in now. ');
res.redirect('/login#login');
})
.catch( (err)=>{
mw.throwErr(err,req);
res.redirect('/login#signup');
});
.then( ()=>{
req.flash('success', 'Password set. You can use it to log in now. ');
res.redirect('/login#login');
})
.catch( (err)=>{
mw.throwErr(err,req);
res.redirect('/login#signup');
});
}
} );

View File

@ -32,7 +32,7 @@ router
let daysToCrack = mellt.CheckPassword(req.body.password);
if (daysToCrack<10) {
let err = new Error(`That password could be cracked in ${daysToCrack} days! Come up with a more complex password that would take at least 10 days to crack. `);
mw.throwErr(err);
mw.throwErr(err,req);
next(err);
}
else {

View File

@ -65,12 +65,12 @@ module.exports = {
else {
// Get loc.usr
User.findById(loc.usr, (err,user)=>{
if (err) { mw.throwErr(err); }
User.findById(loc.usr)
.then( (user)=>{
if (user) {
// Confirm sk32 token
if (loc.tok!=user.sk32) { mw.throwErr(new Error(`⛔️ loc.tok!=user.sk32\n\t${loc.tok} != ${user.sk32}`)); }
if (loc.tok!=user.sk32) { mw.throwErr(new Error(`loc.tok!=user.sk32\n\t${loc.tok} != ${user.sk32}`)); }
else {
// Broadcast location
@ -85,13 +85,13 @@ module.exports = {
spd: parseFloat(loc.spd||0),
time: loc.time
};
user.save( (err)=>{
if (err) { mw.throwErr(err); }
} );
user.save()
.catch( (err)=>{ console.error(`${err.stack}`); } );
}
}
});
})
.catch( (err)=>{ console.error(`${err.stack}`); });
}
});
@ -109,9 +109,7 @@ module.exports = {
});
// Log errors
socket.on('error', (err)=>{
mw.throwErr(err);
});
socket.on('error', (err)=>{ console.error(`${err.stack}`); });
});
}

View File

@ -33,11 +33,9 @@ const
keepAlive:1, connectTimeoutMS:30000 }},
replset:{socketOptions:{
keepAlive:1, connectTimeoutMS:30000 }}
}).catch((err)=>{
mw.throwErr(err);
}).then(()=>{
console.log(`💿 Mongoose connected to mongoDB`);
});
})
.then( ()=>{ console.log(`💿 Mongoose connected to mongoDB`); })
.catch( (err)=>{ console.error(`${err.stack}`); });
}
@ -133,7 +131,7 @@ const
// Production handlers
if (env.mode!=='development') {
app.use( (err,req,res,next)=>{
if (err.status!==404){ console.error(err.stack); }
if (err.status!==404){ console.error(`${err.stack}`); }
if (res.headersSent) { return next(err); }
res.status(err.status||500);
res.render('error', {
@ -146,7 +144,7 @@ const
// Development handlers
else {
app.use( (err,req,res,next)=>{
console.error(err.stack);
console.error(`${err.stack}`);
if (res.headersSent) { return next(err); }
res.status(err.status||500);
res.render('error', {
@ -174,11 +172,14 @@ const
console.log(`🌐 Listening in ${env.mode} mode on port ${env.port}... `);
// Check for clients for each user
User.find( {}, (err,users)=>{
if (err) { console.log(`DB error finding all users: ${err.message}`); }
User.find({})
.then( (users)=>{
users.forEach( (user)=>{
sockets.checkForUsers( io, user.id );
});
})
.catch( (err)=>{
console.error(`${err.stack}`);
});
});