Added delete buttons, and more (issue #3)

master
Keith Irwin 2016-05-06 05:32:31 +00:00
parent 78142becaa
commit c852a9ab53
4 changed files with 79 additions and 48 deletions

View File

@ -1,9 +1,16 @@
secret = require('./secrets.js');
module.exports = {
throwErr: function(req,err){
console.log('Middleware error:'+err+'\nfor request:\n'+req);
req.flash('error-message',err);
req.flash('error', (err.message||'')+'<br>Would you like to <a href="/bug">report this error</a>?');
if (secret.env==='production') {
req.flash('error', 'An error occured. <br>Would you like to <a href="/bug">report it</a>?');
req.flash('error-message',err);
} else {
req.flash('error',err);
req.flash('error-message',err);
}
},
ensureAuth: function(req,res,next){

View File

@ -22,34 +22,53 @@ router.route('/requests')
});
});
}).post(function(req,res){
Request.findById(req.body.invite, function(err, request){
if (err){ req.flash('error', err.message); }
mail.sendInvite(request, function (err, raw) {
if (err) { req.flash('error', err.message); }
request.granted = Date.now();
request.save(function(err) {
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) {
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>.');
res.redirect('/admin/requests');
});
req.flash('success', 'Invitation sent to <i>'+request.name+'</i>.');
});
} 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.'); }
res.redirect('/admin/requests');
});
});
} else { console.log('ERROR! POST without action sent. '); next(); }
});
router.get('/users', [mw.ensureAuth, mw.ensureAdmin], function(req,res){
User.findById(req.session.passport.user, function(err, user){
if (err){ req.flash('error', err.message); }
User.find({}, function(err, users){
if (err) { req.flash('error', err.message); }
res.render('admin/users.html', {
user: user,
users: users,
noFooter: '1',
success:req.flash('success')[0],
error:req.flash('error')[0]
router.route('/users')
.all([mw.ensureAuth, mw.ensureAdmin], function(req,res,next) {
next();
}).get(function(req,res){
User.findById(req.session.passport.user, function(err, user){
if (err){ req.flash('error', err.message); }
User.find({}, function(err, users){
if (err) { req.flash('error', err.message); }
res.render('admin/users.html', {
user: user,
users: users,
noFooter: '1',
success:req.flash('success')[0],
error:req.flash('error')[0]
});
});
});
}).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.'); }
res.redirect('/admin/users');
});
} else { console.log('ERROR! POST without action sent. '); next(); }
});
});
module.exports = router;

View File

@ -26,20 +26,21 @@
<tbody>
{% for request in requests %}
<tr class="table-{% if request.userId %}success{% elif request.granted %}info{% else %}danger{% endif %}">
<td>{{ request.name }}</td>
<td>{{ request.email }}</td>
<td>{{request.name}}</td>
<td>{{request.email}}</td>
<td>{{ request.beg | replace("\r\n", "<br>") | safe }}</td>
<td id='{{ request.id }}-requested'></td>
<td id='{{ request.id }}-granted'>
{% if not request.granted %}
<form action="" method="POST">
<button type="submit" class='btn btn-block btn-default' name="invite" value="{{ request.id }}">INVITE</button>
</form>
{% endif %}
<td id='{{request.id}}-requested'></td>
<td id='{{request.id}}-edit'>
<form action="" method="POST">
{% if not request.granted %}
<button type="submit" class='btn btn-block btn-success' name="invite" value="{{request.id}}">INVITE</button>
{% endif %}
<button type="submit" class='btn btn-block btn-danger' name="delete" value="{{request.id}}">DELETE</button>
</form>
</td>
<td>
{% if request.userId %}
User: <a href="/trac/id/{{ request.userId }}">{{ request.userId }}</a>
User: <a href="/trac/id/{{request.userId}}">{{request.userId}}</a>
{% endif %}
</td>
</tr>
@ -53,13 +54,13 @@
<script src="/static/js/moment.min.js"></script>
<script>
{% for request in requests %}
$('#{{ request.id }}-requested').text(
moment("{{ request.requestedTime }}", "ddd MMM DD YYYY HH:mm:ss [GMT]ZZ").fromNow()
$('#{{request.id}}-requested').text(
moment("{{request.requestedTime}}", "ddd MMM DD YYYY HH:mm:ss [GMT]ZZ").fromNow()
// Sun Mar 20 2016 19:21:55 GMT+0100 (CET)
);
{% if request.granted %}
$('#{{ request.id }}-granted').text(
moment("{{ request.granted }}", "ddd MMM DD YYYY HH:mm:ss [GMT]ZZ").fromNow()
$('#{{request.id}}-edit').text(
moment("{{request.granted}}", "ddd MMM DD YYYY HH:mm:ss [GMT]ZZ").fromNow()
);
{% endif %}
{% endfor %}

View File

@ -20,15 +20,19 @@
<th>Joined</th>
<th>Last login</th>
<th>Moved</th>
<th>Edit</th>
</tr></thead>
<tbody>
{% for usr in users %}
<tr>
<td>{{ usr.name }}</td>
<td><a href="/trac/{{ usr.slug }}">/{{ usr.slug }}</a></td>
<td id='{{ usr.id }}-created'></td>
<td id='{{ usr.id }}-logged'></td>
<td id='{{ usr.id }}-moved'></td>
<td>{{usr.name}}</td>
<td><a href="/trac/{{usr.slug}}">/{{usr.slug}}</a></td>
<td id='{{usr.id}}-created'></td>
<td id='{{usr.id}}-logged'></td>
<td id='{{usr.id}}-moved'></td>
<td id='{{usr.id}}-edit'><form action="" method="POST">
<button type="submit" class='btn btn-block btn-danger' name="delete" value="{{usr.id}}">DELETE</button>
</form></td>
</tr>
{% endfor %}
</tbody>
@ -41,23 +45,23 @@
<script>
{% for usr in users %}
{% if usr.created %}
$('#{{ usr.id }}-created').text(
moment("{{ usr.created }}", "ddd MMM DD YYYY HH:mm:ss [GMT]ZZ").format('l')
$('#{{usr.id}}-created').text(
moment("{{usr.created}}", "ddd MMM DD YYYY HH:mm:ss [GMT]ZZ").format('l')
);
{% endif %}
{% if usr.lastLogin %}
$('#{{ usr.id }}-logged').text(
moment("{{ usr.lastLogin }}", "ddd MMM DD YYYY HH:mm:ss [GMT]ZZ").fromNow()
$('#{{usr.id}}-logged').text(
moment("{{usr.lastLogin}}", "ddd MMM DD YYYY HH:mm:ss [GMT]ZZ").fromNow()
);
{% endif %}
{% if usr.last.time %}
$('#{{ usr.id }}-moved').text(
moment("{{ usr.last.time }}", "ddd MMM DD YYYY HH:mm:ss [GMT]ZZ").fromNow()
$('#{{usr.id}}-moved').text(
moment("{{usr.last.time}}", "ddd MMM DD YYYY HH:mm:ss [GMT]ZZ").fromNow()
);
{% else %}
$('#{{ usr.id }}-moved').text("never");
$('#{{usr.id}}-moved').text("never");
{% endif %}
{% endfor %}
</script>