Files
kno-logic-api/routes/admin.route.js

49 lines
1.7 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).json({ success: false, response: "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.status(200).json({ success: true, response: stats });
});
});
});
});
} else {
res.status(401).json({ success: false, response: "Invalid permissions to view stats" });
return;
}
})
});
});
module.exports = adminRoutes;