-
Notifications
You must be signed in to change notification settings - Fork 5
/
admin.js
82 lines (70 loc) · 2.36 KB
/
admin.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
var express = require('express'),
Message = require('../models/Message');
// Create basic auth middleware used to authenticate all admin requests
exports.auth = express.basicAuth(process.env.BASIC_UN, process.env.BASIC_PW);
// Middleware to redirect all non-secure traffic to an SSL endpoint - use
// Heroku's header to determine if the original request was over SSL or not
exports.secure = function(request, response, next) {
// Check current environment and Heroku protocol header
var prod = process.env.NODE_ENV === 'production',
notSecure = request.header('x-forwarded-proto') !== 'https';
// Redirect to SSL if necessary
if (prod && notSecure) {
var host = request.header('host'), url = request.url;
response.redirect('https://'+ host + url);
}
// Otherwise continue to process the request
next();
};
// Render admin home page
exports.index = function(request, response) {
response.render('admin', {
title: 'Moderate Messages',
staticfile: 'admin'
});
};
// Get a list of messages
exports.messages = function(request, response) {
// Get query params
var favorites = request.param('favorites') ? true : false,
unapproved = request.param('unapproved') ? true : false;
// Query for public accessible messages
Message.listMessages({
unapproved: unapproved,
favorites: favorites
}, function(err, models) {
if (err) {
response.send(500, err);
} else {
response.send(models);
}
});
};
// Update a given message
exports.update = function(request, response) {
console.log(request.param('props'));
// Args for find and update
var id = request.param('id'),
props = JSON.parse(request.param('props'));
// Update message based on input from client
Message.findByIdAndUpdate(id, props, function(err, doc) {
if (err) {
response.send(500, err);
} else {
response.send(doc);
}
});
};
// Delete a given message
exports.delete = function(request, response) {
// Args for find and remove
var id = request.param('id');
// Update message based on input from client
Message.findByIdAndRemove(id, function(err, doc) {
if (err) {
response.send(500, err);
} else {
response.send(doc);
}
});
};