#50 Added many promises
parent
14f3d18d5c
commit
f7d2fd3482
|
@ -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); });
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
} );
|
||||
}
|
||||
|
|
|
@ -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;
|
|
@ -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');
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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');
|
||||
});
|
||||
|
||||
}
|
||||
} );
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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}`); });
|
||||
|
||||
});
|
||||
}
|
||||
|
|
19
server.js
19
server.js
|
@ -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}`);
|
||||
});
|
||||
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue