/**
|
|
* 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);
|
|
})
|
|
}
|
|
});
|
|
}
|
|
};
|