Added delete buttons, and more (issue #3)
parent
78142becaa
commit
c852a9ab53
|
@ -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){
|
||||
|
|
|
@ -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;
|
|
@ -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 %}
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue