tracman-server/config/routes/invite.js

54 lines
1.6 KiB
JavaScript

var router = require('express').Router(),
mw = require('../middleware.js'),
User = require('../models/user.js'),
Request = require('../models/request.js');
router.get('/:invite', function(req,res,next){
User.findOne({requestId:req.params.invite}, function(err, existingUser) { // User already accepted invite
if (err) { console.log('routes.js:121 ERROR: '+err); }
if (existingUser) { res.redirect('/login'); }
else {
Request.findById(req.params.invite, function(err, request) { // Check for granted invite
if (err) { mw.throwErr(req,err); }
if (!request) { next(); }
else {
new User({ // Create new user
requestId: request._id,
email: '',
slug: request._id,
name: request.name,
created: Date.now(),
settings: {
units: 'imperial',
showSpeed: false,
showTemp: false,
showAlt: false,
showStreetview: true
}
}).save(function(err) {
if (err) { mw.throwErr(req,err); }
User.findOne({requestId:request._id}, function(err, user) {
if (err) { mw.throwErr(req,err); }
if (user) {
request.userId = user._id;
request.save(function(err, raw){
if (err){ mw.throwErr(req,err); }
});
req.logIn(user, function(err) {
if (err) { mw.throwErr(req,err); }
user.lastLogin = Date.now();
user.save(function(err, raw) {
if (err) { mw.throwErr(req,err); }
res.redirect('/login');
});
});
}
});
});
}
});
}
});
});
module.exports = router;