tracman-server/config/routes/admin.js

88 lines
2.5 KiB
JavaScript
Raw Normal View History

2016-03-31 15:57:34 -06:00
var router = require('express').Router(),
2016-06-12 18:18:34 -06:00
fs= require('fs'),
2016-03-31 15:57:34 -06:00
mw = require('../middleware.js'),
mail = require('../mail.js'),
User = require('../models/user.js'),
Request = require('../models/request.js');
2016-06-12 18:18:34 -06:00
router.route('/')
.all(mw.ensureAdmin, function(req,res,next){
2016-03-31 15:57:34 -06:00
next();
}).get(function(req,res){
2016-06-30 14:40:21 -06:00
var cbc = 0;
var checkCBC = function(req,res,err){
if (err) { req.flash('error', err.message); }
if (cbc<2){ cbc++; }
else { // done
res.render('admin.html', {
2016-03-31 15:57:34 -06:00
noFooter: '1',
success:req.flash('success')[0],
error:req.flash('error')[0]
});
2016-06-30 14:40:21 -06:00
}
}
User.findById(req.session.passport.user, function(err, found) {
res.locals.user = found;
checkCBC(req,res,err);
});
Request.find({}).sort({requestedTime:-1}).exec(function(err, found){
res.locals.requests = found;
checkCBC(req,res,err);
2016-03-31 15:57:34 -06:00
});
2016-06-30 14:40:21 -06:00
User.find({}).sort({lastLogin:-1}).exec(function(err, found){
res.locals.users = found;
checkCBC(req,res,err);
});
});
router.route('/requests')
.all(mw.ensureAdmin, function(req,res,next){
if (err) {
req.flash('error',err);
req.flash('error-message',err);
}
2016-03-31 15:57:34 -06:00
}).post(function(req,res){
if (req.body.invite) {
Request.findById(req.body.invite, function(err,request){
if (err){ req.flash('error', err.message); }
mail.sendInvite(request, function (err, raw) {
2016-03-31 15:57:34 -06:00
if (err) { req.flash('error', err.message); }
request.granted = Date.now();
request.save(function(err) {
if (err) { req.flash('error', err.message); }
});
req.flash('success', 'Invitation sent to <i>'+request.name+'</i>.');
2016-06-30 14:40:21 -06:00
res.redirect('/admin#requests');
2016-03-31 15:57:34 -06:00
});
});
} else if (req.body.delete) {
Request.findOneAndRemove({'_id':req.body.delete}, function(err,request){
if (err){ req.flash('error', err.message); }
else { req.flash('success', 'Request deleted.'); }
2016-06-30 14:40:21 -06:00
res.redirect('/admin#requests');
2016-03-31 15:57:34 -06:00
});
} else { console.log('ERROR! POST without action sent. '); next(); }
2016-03-31 15:57:34 -06:00
});
router.route('/users')
2016-06-30 14:40:21 -06:00
.all(mw.ensureAdmin, function(req,res,next){
if (err) {
req.flash('error',err);
req.flash('error-message',err);
}
}).post(function(req,res){
if (req.body.delete) {
User.findOneAndRemove({'_id':req.body.delete}, function(err,user){
if (err){ req.flash('error', err.message); }
else { req.flash('success', '<i>'+user.name+'</i> deleted.'); }
2016-06-30 14:40:21 -06:00
res.redirect('/admin#users');
});
} else { console.log('ERROR! POST without action sent. '); next(); }
2016-03-31 15:57:34 -06:00
});
module.exports = router;