54 lines
1.6 KiB
JavaScript
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; |