tracman-server/config/routes/index.js

101 lines
2.5 KiB
JavaScript
Raw Normal View History

'use strict';
2017-03-15 02:08:12 -06:00
const slug = require('slug'),
2017-03-18 12:58:18 -06:00
xss = require('xss'),
2017-03-15 02:08:12 -06:00
mw = require('../middleware.js'),
2017-04-01 11:03:05 -06:00
User = require('../models.js').user,
2017-03-15 02:08:12 -06:00
router = require('express').Router();
2017-03-14 22:05:03 -06:00
2017-03-18 12:46:02 -06:00
// Index
2017-03-18 13:40:03 -06:00
router.get('/', function(req,res,next) {
2017-04-01 11:03:05 -06:00
res.render('index');
2017-03-18 12:46:02 -06:00
});
2016-03-31 15:57:34 -06:00
// Settings
2017-03-18 12:27:32 -06:00
router.route('/settings').all(mw.ensureAuth, function(req,res,next){
next();
})
// Get settings form
2017-03-18 12:27:32 -06:00
.get(function(req,res,next){
User.findById(req.session.passport.user, function(err,user){
if (err){ console.log('Error finding settings for user:',err); mw.throwErr(req,err); }
2017-04-01 11:03:05 -06:00
res.render('settings');
});
2017-03-18 12:27:32 -06:00
})
// Set new settings
2017-03-18 12:27:32 -06:00
.post(function(req,res,next){
User.findByIdAndUpdate(req.session.passport.user, {$set:{
2017-03-18 12:58:18 -06:00
name: xss(req.body.name),
slug: slug(xss(req.body.slug)),
email: req.body.email,
settings: {
units: req.body.units,
defaultMap: req.body.map,
defaultZoom: req.body.zoom,
showSpeed: (req.body.showSpeed)?true:false,
showAlt: (req.body.showAlt)?true:false,
showStreetview: (req.body.showStreet)?true:false
}
}}, function(err, user){
if (err) { console.log('Error updating user settings:',err); mw.throwErr(req,err); }
else { req.flash('success', 'Settings updated. '); }
2017-03-18 12:46:02 -06:00
res.redirect('/settings');
});
})
// Delete user account
2017-03-18 12:27:32 -06:00
.delete(function(req,res,next){
User.findByIdAndRemove( req.session.passport.user,
function(err) {
if (err) {
console.log('Error deleting user:',err);
mw.throwErr(req,err);
} else {
req.flash('success', 'Your account has been deleted. ');
res.redirect('/');
}
}
);
});
2017-03-18 11:21:48 -06:00
// Tracman pro
2017-03-18 12:27:32 -06:00
router.route('/pro').all(mw.ensureAuth, function(req,res,next){
2017-03-18 11:21:48 -06:00
next();
2017-03-18 12:27:32 -06:00
})
// Get info about pro
.get(function(req,res,next){
2017-03-18 11:21:48 -06:00
User.findById(req.session.passport.user, function(err, user){
if (err){ mw.throwErr(req,err); }
if (!user){ next(); }
2017-04-01 11:03:05 -06:00
else { res.render('pro'); }
2017-03-18 11:21:48 -06:00
});
2017-03-18 12:27:32 -06:00
})
// Join Tracman pro
.post(function(req,res){
2017-03-18 11:21:48 -06:00
User.findByIdAndUpdate(req.session.passport.user,
{$set:{ isPro:true }},
function(err, user){
if (err){ mw.throwErr(req,err); }
else { req.flash('success','You have been signed up for pro. '); }
res.redirect('/map');
}
);
});
// Help
2017-04-01 11:03:05 -06:00
router.get('/help', mw.ensureAuth, function(req,res){
res.render('help');
});
2017-04-01 11:03:05 -06:00
// Terms of Service and Privacy Policy
2017-03-18 11:21:48 -06:00
router.get('/terms', function(req,res){
2017-04-01 11:03:05 -06:00
res.render('terms');
}).get('/privacy', function(req,res){
res.render('privacy');
2017-03-18 11:21:48 -06:00
});
2016-03-31 15:57:34 -06:00
module.exports = router;