49 lines
1.6 KiB
JavaScript
49 lines
1.6 KiB
JavaScript
const utils = require('../utils/utils');
|
|
const express = require('express');
|
|
const adminRoutes = express.Router();
|
|
|
|
let Post = require('../schema/post.model');
|
|
let Category = require('../schema/category.model');
|
|
let Session = require('../schema/session.model');
|
|
let User = require('../schema/user.model');
|
|
|
|
/*
|
|
POST - /admin/stats
|
|
Get system status
|
|
Response: 201 - Created
|
|
401 - Unauthorized
|
|
*/
|
|
adminRoutes.route('/stats').post((req, res) => {
|
|
if (!req.body) {
|
|
res.status(401).send("Missing body");
|
|
return;
|
|
}
|
|
utils.account.checkSession(req.body.userId, req.body.sessionId, (isValidId) => {
|
|
utils.account.isAdmin(req.body.userId, (isAdmin) => {
|
|
if (isValidId && isAdmin) {
|
|
let stats = {};
|
|
Post.count({}, (err, postCount) => {
|
|
stats.postCount = postCount;
|
|
Category.count({}, (err, categoryCount) => {
|
|
stats.categoryCount = categoryCount;
|
|
Session.count({}, (err, sessionCount) => {
|
|
stats.sessionCount = sessionCount;
|
|
User.count({}, (err, userCount) => {
|
|
stats.userCount = userCount;
|
|
stats.date = Date();
|
|
res.json(stats);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
} else {
|
|
res.status(401).send("Invalid permissions to view stats.");
|
|
return;
|
|
}
|
|
})
|
|
});
|
|
});
|
|
|
|
|
|
module.exports = adminRoutes;
|