started new api for retrieving markdown pages, dashboard displaying files for editing
This commit is contained in:
parent
c549e5ba7c
commit
19cb97b9c4
9 changed files with 124 additions and 28 deletions
|
@ -15,7 +15,7 @@ const fs = require('fs-extra');
|
||||||
const dateUtils = new DateUtils();
|
const dateUtils = new DateUtils();
|
||||||
const rightsManager = new RightsManager();
|
const rightsManager = new RightsManager();
|
||||||
const uploadPath =
|
const uploadPath =
|
||||||
'./content/blog-images/' +
|
'./public/assets/images/blog/' +
|
||||||
dateUtils.getDate('year', new Date()) +
|
dateUtils.getDate('year', new Date()) +
|
||||||
'/' +
|
'/' +
|
||||||
dateUtils.getDate('month', new Date());
|
dateUtils.getDate('month', new Date());
|
||||||
|
|
|
@ -13,7 +13,7 @@ const fs = require('fs-extra');
|
||||||
const dateUtils = new DateUtils();
|
const dateUtils = new DateUtils();
|
||||||
const rightsManager = new RightsManager();
|
const rightsManager = new RightsManager();
|
||||||
const uploadPath =
|
const uploadPath =
|
||||||
'./content/user-images/' +
|
'./public/assets/images/user/' +
|
||||||
dateUtils.getDate('year', new Date()) +
|
dateUtils.getDate('year', new Date()) +
|
||||||
'/' +
|
'/' +
|
||||||
dateUtils.getDate('month', new Date());
|
dateUtils.getDate('month', new Date());
|
||||||
|
|
|
@ -16,7 +16,6 @@ router.get('/', function(req, res) {
|
||||||
jwt.verify(token, 'super-secret-string', function(err, decoded) {
|
jwt.verify(token, 'super-secret-string', function(err, decoded) {
|
||||||
if (err)
|
if (err)
|
||||||
return res.status(500).send({ auth: false, message: 'Failed to authenticate token.' });
|
return res.status(500).send({ auth: false, message: 'Failed to authenticate token.' });
|
||||||
|
|
||||||
res.status(200).send(decoded);
|
res.status(200).send(decoded);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -24,7 +23,6 @@ router.get('/', function(req, res) {
|
||||||
* Login Member and return token
|
* Login Member and return token
|
||||||
*/
|
*/
|
||||||
router.post('/login', function(req, res) {
|
router.post('/login', function(req, res) {
|
||||||
let form = req.body;
|
|
||||||
fs.readJson('config/folks.json').then(folks => {
|
fs.readJson('config/folks.json').then(folks => {
|
||||||
let found = _.find(folks, { handle: req.body.handle });
|
let found = _.find(folks, { handle: req.body.handle });
|
||||||
if (found) {
|
if (found) {
|
||||||
|
@ -42,7 +40,6 @@ router.post('/login', function(req, res) {
|
||||||
let session = req.session;
|
let session = req.session;
|
||||||
session.user = found;
|
session.user = found;
|
||||||
session.token = token;
|
session.token = token;
|
||||||
|
|
||||||
res.json({ type: DataEvent.REQUEST_GOOD, message: 'Yes', token: session.token });
|
res.json({ type: DataEvent.REQUEST_GOOD, message: 'Yes', token: session.token });
|
||||||
} else {
|
} else {
|
||||||
res.json({
|
res.json({
|
||||||
|
|
55
brain/api/v1/pages.js
Normal file
55
brain/api/v1/pages.js
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
import DateUtils from '../../utils/tools/DateUtils';
|
||||||
|
import Pages from '../../utils/content/Pages';
|
||||||
|
import StringUtils from '../../utils/tools/StringUtils';
|
||||||
|
import * as DataEvent from '../../utils/events/DataEvent';
|
||||||
|
import sanitize from 'sanitize-html';
|
||||||
|
import RightsManager, {
|
||||||
|
TASK_CREATE,
|
||||||
|
TASK_UPDATE,
|
||||||
|
OBJECT_POST
|
||||||
|
} from '../../utils/tools/RightsManager';
|
||||||
|
const express = require('express');
|
||||||
|
const router = express.Router();
|
||||||
|
const multer = require('multer');
|
||||||
|
const md = require('markdown-it')('commonmark');
|
||||||
|
const fs = require('fs-extra');
|
||||||
|
const dateUtils = new DateUtils();
|
||||||
|
const rightsManager = new RightsManager();
|
||||||
|
const pagesUtil = new Pages();
|
||||||
|
const uploadPath =
|
||||||
|
'./public/assets/images/blog/' +
|
||||||
|
dateUtils.getDate('year', new Date()) +
|
||||||
|
'/' +
|
||||||
|
dateUtils.getDate('month', new Date());
|
||||||
|
const _ = require('lodash');
|
||||||
|
fs.ensureDir(uploadPath, () => {
|
||||||
|
//console.log(err) // => null
|
||||||
|
// dir has now been created, including the directory it is to be placed in
|
||||||
|
});
|
||||||
|
var storage = multer.diskStorage({
|
||||||
|
destination: function(req, file, cb) {
|
||||||
|
cb(null, uploadPath);
|
||||||
|
},
|
||||||
|
filename: function(req, file, cb) {
|
||||||
|
var splice = file.originalname.split(':');
|
||||||
|
cb(null, splice[0]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var feature_upload = multer({
|
||||||
|
storage: storage
|
||||||
|
}).array('feature_image');
|
||||||
|
var post_upload = multer({
|
||||||
|
storage: storage
|
||||||
|
}).array('post_image');
|
||||||
|
|
||||||
|
/***
|
||||||
|
Retrieve Pages
|
||||||
|
*/
|
||||||
|
router.get('/', (req, res) => {
|
||||||
|
pagesUtil.retrieve().then(result => {
|
||||||
|
res.json(result);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = router;
|
18
brain/app.js
18
brain/app.js
|
@ -44,25 +44,25 @@ app.use(flash());
|
||||||
//var front = require('./routes/front/index')(session);
|
//var front = require('./routes/front/index')(session);
|
||||||
var dash = require('./routes/dash/index');
|
var dash = require('./routes/dash/index');
|
||||||
var postDashboard = require('./routes/dash/posts');
|
var postDashboard = require('./routes/dash/posts');
|
||||||
var settingsDashboard = require('./routes/dash/settings');
|
//var settingsDashboard = require('./routes/dash/settings');
|
||||||
var navDashboard = require('./routes/dash/nav');
|
//var navDashboard = require('./routes/dash/nav');
|
||||||
//api
|
//api
|
||||||
var postLibrary = require('./api/content/posts');
|
var pages = require('./api/v1/pages');
|
||||||
var settings = require('./api/content/settings');
|
//var settings = require('./api/content/settings');
|
||||||
var mailer = require('./api/mail/mailer');
|
//var mailer = require('./api/mail/mailer');
|
||||||
var auth = require('./api/v1/auth');
|
var auth = require('./api/v1/auth');
|
||||||
// API PATHS
|
// API PATHS
|
||||||
|
|
||||||
//app.use('/api/post', postLibrary);
|
app.use('/api/v1/page', pages);
|
||||||
//app.use('/api/settings', settings);
|
//app.use('/api/settings', settings);
|
||||||
app.use('/api/mail', mailer);
|
//app.use('/api/mail', mailer);
|
||||||
app.use('/api/v1/auth', auth);
|
app.use('/api/v1/auth', auth);
|
||||||
// PAGES
|
// PAGES
|
||||||
//app.use('/', front);
|
//app.use('/', front);
|
||||||
app.use('/@/dashboard', dash);
|
app.use('/@/dashboard', dash);
|
||||||
app.use('/@/dashboard/posts', postDashboard);
|
app.use('/@/dashboard/posts', postDashboard);
|
||||||
app.use('/@/dashboard/settings', settingsDashboard);
|
//app.use('/@/dashboard/settings', settingsDashboard);
|
||||||
app.use('/@/dashboard/navigation', navDashboard);
|
//app.use('/@/dashboard/navigation', navDashboard);
|
||||||
//app.use('/mailer', mailer);
|
//app.use('/mailer', mailer);
|
||||||
// catch 404 and forward to error handler
|
// catch 404 and forward to error handler
|
||||||
app.use(function(req, res, next) {
|
app.use(function(req, res, next) {
|
||||||
|
|
|
@ -1,17 +1,23 @@
|
||||||
|
import Pages from '../../utils/content/Pages';
|
||||||
|
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
const settings = require('../../../config/site-settings.json');
|
const settings = require('../../../config/site-settings.json');
|
||||||
|
|
||||||
//--------------------------
|
//--------------------------
|
||||||
// Index
|
// Index
|
||||||
//--------------------------
|
//--------------------------
|
||||||
router.get('/', function(req, res) {
|
router.get('/', function(req, res) {
|
||||||
let loggedIn = false;
|
let pages = new Pages();
|
||||||
|
pages.retrieve().then(result => {
|
||||||
|
let pageData = [];
|
||||||
|
if (req.session.user) {
|
||||||
|
pageData = { title: settings.title, status: true, pages: result };
|
||||||
|
} else {
|
||||||
|
pageData = { title: settings.title, status: false, pages: result };
|
||||||
|
}
|
||||||
|
|
||||||
if (req.session.user) loggedIn = true;
|
res.render(settings.admin_theme + '/index', pageData);
|
||||||
|
|
||||||
res.render(settings.admin_theme + '/index', {
|
|
||||||
title: settings.title,
|
|
||||||
auth_status: loggedIn
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@ const dateUtils = new DateUtils();
|
||||||
router.get('/list/:filter?/:page?', function(req, res) {
|
router.get('/list/:filter?/:page?', function(req, res) {
|
||||||
var pageNum = req.params.page;
|
var pageNum = req.params.page;
|
||||||
var filter = req.params.filter;
|
var filter = req.params.filter;
|
||||||
|
|
||||||
if (pageNum == '' || pageNum == null) pageNum = 1;
|
if (pageNum == '' || pageNum == null) pageNum = 1;
|
||||||
if (filter == '' || filter == null) filter = 'all';
|
if (filter == '' || filter == null) filter = 'all';
|
||||||
/*
|
/*
|
||||||
|
|
52
package-lock.json
generated
52
package-lock.json
generated
|
@ -4216,14 +4216,22 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"https-proxy-agent": {
|
"https-proxy-agent": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
|
||||||
"integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
|
"integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"agent-base": "^4.1.0",
|
"agent-base": "^4.3.0",
|
||||||
"debug": "^3.1.0"
|
"debug": "^3.1.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"agent-base": {
|
||||||
|
"version": "4.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
|
||||||
|
"integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
|
||||||
|
"requires": {
|
||||||
|
"es6-promisify": "^5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"debug": {
|
"debug": {
|
||||||
"version": "3.2.6",
|
"version": "3.2.6",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
|
||||||
|
@ -4233,9 +4241,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ms": {
|
"ms": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -4517,6 +4525,22 @@
|
||||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"js-yaml": {
|
||||||
|
"version": "3.13.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
|
||||||
|
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
|
||||||
|
"requires": {
|
||||||
|
"argparse": "^1.0.7",
|
||||||
|
"esprima": "^4.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"esprima": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"jsbn": {
|
"jsbn": {
|
||||||
"version": "0.1.1",
|
"version": "0.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||||
|
@ -4874,6 +4898,15 @@
|
||||||
"uc.micro": "^1.0.5"
|
"uc.micro": "^1.0.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"markdown-yaml-metadata-parser": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/markdown-yaml-metadata-parser/-/markdown-yaml-metadata-parser-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-0VKi80rjcMTq3zBUwAzzYGa4Lp4pp+DE4hQW21cbhLVTLXygSxl9euAA6k+xiRvNubWIOjUEnoSiNgPcCuD27Q==",
|
||||||
|
"requires": {
|
||||||
|
"js-yaml": "^3.13.1",
|
||||||
|
"ramda": "^0.26.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"mdurl": {
|
"mdurl": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
|
||||||
|
@ -5816,6 +5849,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||||
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
|
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
|
||||||
},
|
},
|
||||||
|
"ramda": {
|
||||||
|
"version": "0.26.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz",
|
||||||
|
"integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ=="
|
||||||
|
},
|
||||||
"random-bytes": {
|
"random-bytes": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
"lodash": "^4.17.15",
|
"lodash": "^4.17.15",
|
||||||
"mailgun-js": "^0.18.0",
|
"mailgun-js": "^0.18.0",
|
||||||
"markdown-it": "^8.4.1",
|
"markdown-it": "^8.4.1",
|
||||||
|
"markdown-yaml-metadata-parser": "^2.0.3",
|
||||||
"memorystore": "^1.6.1",
|
"memorystore": "^1.6.1",
|
||||||
"morgan": "latest",
|
"morgan": "latest",
|
||||||
"multer": "latest",
|
"multer": "latest",
|
||||||
|
|
Loading…
Reference in a new issue