/** * Determines what template and controls that will be * displayed based on the url such as * / * /blog * /downloads * * For each controls it calls that "pages" associated javascript file * which fetches the template, deals with post data and gathers context * for the template engine. */ //file IO const utils = require('../utils/utils.js'); module.exports= { /** * * @param request -- used to get post data * @param clientAddress -- used to see if user is banned for login * @param templateContext -- used by whiskers for information to plug * in the template * @param filename -- specific admin page requested * @returns {Promise} resolves once everything has been added to the template context */ main: function(request, clientAddress, templateContext, filename) { return new Promise(function(resolve, reject) { //if logged in if(request.session && request.session.user) { templateContext.loggedIn = true; utils.getPostData(request).then(function (postData) { var page = "./adminHome.js"; if(filename.includes('/downloads')) { page = "./adminDownloads.js"; } else if(filename.includes("/posts")) { page = "./posts.js"; } else if(filename.includes("/users")) { page = "./users.js"; } else if(filename.includes("/analytics")) { page = "./analytics.js" } require(page).main(postData, templateContext).then(function(template) { templateContext.adminPage = template; resolve(); }).catch(function(error) { console.log(error); }); }); } else { require("./login.js").main(request, clientAddress, templateContext) .then(function() { resolve(); }).catch(function(err) { console.log(err); reject(err); }) } }); } };