UNPKG

cmstyx

Version:

Barebones Content Management System

162 lines (144 loc) 4.67 kB
var q = require('q'); var path = require('path'); var bcrypt = require('bcrypt'); var router = require('express').Router(); var conf = require('../../settings.json'); var pm = require('../data-handlers/post-master.js'); var overseer = require('../auth/overseer.js'); // var pages = path.join(__dirname, '/lib/views/'); // var setup = require('../setup/establish.js'); var pages = path.join(__dirname, 'views/'); var dbController = 0; var admin = false; router.database = function (db){ dbController = db; pm.dbSet(dbController); return 0; } router.get('/', function (req, res){ res.render(pages + 'sign-in', { 'message' : "PASSWORD", 'root' : conf.loginAdress, 'title' : conf.websiteName }); }); router.post('/login', function (req, res){ var password = req.body.password; var secret = conf.superSecret; if (conf.adminPassword != 'password') { bcrypt.compare(password, conf.adminPassword, function (err, result){ if (err) return console.error(err); if (result) { overseer.createToken() .then(function (cookie){ overseer.newLogin(res, cookie, 600000); res.redirect(conf.loginAdress + '/cmstyx-control'); }) .fail(function (err){ console.log(err); console.log("SE~ Could not create token"); }); } else { res.redirect(conf.loginAdress); } }); } else { bcrypt.genSalt(13, function (err, salt){ bcrypt.hash(password, salt, function (err, hash){ conf.adminPassword = hash; setup.save(conf); }); }); }0 }); router.get('/cmstyx-control', function (req, res){ overseer.isAuthenticated(req) .then(function (){ var opt = { "title" : conf.websiteName, "managedElements" : {} }; pm.getCMSElements(dbController) .then(function (data){ // console.log('STYX DATA : '); opt.managedElements = data; // console.log(data); res.render(pages + 'styx', opt); }) .fail(function (err){ console.log(err); }); }) .fail(function (err){ res.redirect(conf.loginAdress); }); }); router.post('/modify/new', function (req, res){ overseer.isAuthenticated(req) .then(function (){ var packet = req.body; var eleName = packet._title; var table = 'web-elements'; var query = 'value.stx_element: ' + eleName; console.log(query); pm.lookWith(query, table, dbController) .then(function (res){ var search = res.body.results; if (search.length == 0) { pm.createElement(packet, dbController, res); } else { console.log("Issues are happening :("); } }); }) .fail(function (err){ res.redirect(conf.loginAdress); }); }); router.post('/modify/add/:element/:index', function (req, res){ overseer.isAuthenticated(req) .then(function (){ var collection = req.params.element; var eleIndex = req.params.index; pm.append(req, res, collection, eleIndex, dbController); }) .fail(function (err){ res.redirect(conf.loginAdress); }); }); router.get('/modify/remove', function (req, res){ overseer.isAuthenticated(req) .then(function (){ pm.remove(req, res, dbController) .then(function (){ res.redirect(conf.loginAdress + '/cmstyx-control'); }) .fail(function (){ res.redirect(conf.loginAdress + '/cmstyx-control'); }); }) .fail(function (err){ res.redirect(conf.loginAdress); }); }); router.post('/modify/update/:target', function (req, res){ overseer.isAuthenticated(req) .then(function (){ var target = req.params.target; pm.rebuild(req, res, target, dbController); }) .fail(function (err){ res.redirect(conf.loginAdress); }); }); router.get('/modify/delete/:target', function (req, res){ overseer.isAuthenticated(req) .then(function (){ var target = req.params.target; pm.trim(res, target, dbController); }) .fail(function (err){ res.redirect(conf.loginAdress); }); }); module.exports = router;