Skip to content

Commit

Permalink
ES6 migration: server/web/middleware (#9737)
Browse files Browse the repository at this point in the history
refs #9589
  • Loading branch information
larsnolden authored and kirrg001 committed Sep 10, 2018
1 parent b17e242 commit 5e96393
Show file tree
Hide file tree
Showing 16 changed files with 78 additions and 84 deletions.
9 changes: 4 additions & 5 deletions core/server/web/middleware/admin-redirects.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
var express = require('express'),
urlService = require('../../services/url'),
adminRedirect;
const express = require('express'),
urlService = require('../../services/url');

adminRedirect = function adminRedirect(path) {
const adminRedirect = function adminRedirect(path) {
return function doRedirect(req, res) {
return urlService.utils.redirectToAdmin(301, res, path);
};
};

module.exports = function adminRedirects() {
var router = express.Router();
const router = express.Router();
// Admin redirects - register redirect as route
// TODO: this should be middleware!
router.get(/^\/(logout|signout)\/$/, adminRedirect('#/signout/'));
Expand Down
2 changes: 1 addition & 1 deletion core/server/web/middleware/brute.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var url = require('url'),
const url = require('url'),
spamPrevention = require('./api/spam-prevention');

/**
Expand Down
18 changes: 9 additions & 9 deletions core/server/web/middleware/cache-control.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
//
// Allows each app to declare its own default caching rules

var _ = require('lodash'),
config = require('../../config'),
cacheControl;
const _ = require('lodash'),
config = require('../../config');

cacheControl = function cacheControl(options) {
var profiles = {
public: 'public, max-age=' + config.get('caching:frontend:maxAge'),
private: 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0'
},
output;
const cacheControl = function cacheControl(options) {
const profiles = {
public: 'public, max-age=' + config.get('caching:frontend:maxAge'),
private: 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0'
};

let output;

if (_.isString(options) && profiles.hasOwnProperty(options)) {
output = profiles[options];
Expand Down
12 changes: 6 additions & 6 deletions core/server/web/middleware/custom-redirects.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
var fs = require('fs-extra'),
_ = require('lodash'),
const fs = require('fs-extra'),
express = require('express'),
url = require('url'),
path = require('path'),
debug = require('ghost-ignition').debug('custom-redirects'),
config = require('../../config'),
common = require('../../lib/common'),
validation = require('../../data/validation'),
customRedirectsRouter,
_private = {};

let customRedirectsRouter;

_private.registerRoutes = function registerRoutes() {
debug('redirects loading');

customRedirectsRouter = express.Router();

try {
var redirects = fs.readFileSync(path.join(config.getContentPath('data'), 'redirects.json'), 'utf-8');
let redirects = fs.readFileSync(path.join(config.getContentPath('data'), 'redirects.json'), 'utf-8');
redirects = JSON.parse(redirects);
validation.validateRedirects(redirects);

_.each(redirects, function (redirect) {
redirects.forEach(function (redirect) {
/**
* always delete trailing slashes, doesn't matter if regex or not
* Example:
Expand All @@ -37,7 +37,7 @@ _private.registerRoutes = function registerRoutes() {

debug('register', redirect.from);
customRedirectsRouter.get(new RegExp(redirect.from), function (req, res) {
var maxAge = redirect.permanent ? config.get('caching:customRedirects:maxAge') : 0,
const maxAge = redirect.permanent ? config.get('caching:customRedirects:maxAge') : 0,
parsedUrl = url.parse(req.originalUrl);

res.set({
Expand Down
25 changes: 12 additions & 13 deletions core/server/web/middleware/error-handler.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
var _ = require('lodash'),
hbs = require('express-hbs'),
const hbs = require('express-hbs'),
debug = require('ghost-ignition').debug('error-handler'),
config = require('../../config'),
common = require('../../lib/common'),
Expand All @@ -13,7 +12,7 @@ var _ = require('lodash'),
* It uses the {{asset}} helper, and nothing more
*/
_private.createHbsEngine = function createHbsEngine() {
var engine = hbs.create();
const engine = hbs.create();
engine.registerHelper('asset', require('../../helpers/asset'));

return engine.express4();
Expand All @@ -27,7 +26,7 @@ _private.createHbsEngine = function createHbsEngine() {
_private.prepareError = function prepareError(err, req, res, next) {
debug(err);

if (_.isArray(err)) {
if (Array.isArray(err)) {
err = err[0];
}

Expand Down Expand Up @@ -74,11 +73,11 @@ _private.JSONErrorRenderer = function JSONErrorRenderer(err, req, res, next) { /
};

_private.ErrorFallbackMessage = function ErrorFallbackMessage(err) {
return '<h1>' + common.i18n.t('errors.errors.oopsErrorTemplateHasError') + '</h1>' +
'<p>' + common.i18n.t('errors.errors.encounteredError') + '</p>' +
'<pre>' + escapeExpression(err.message || err) + '</pre>' +
'<br ><p>' + common.i18n.t('errors.errors.whilstTryingToRender') + '</p>' +
err.statusCode + ' ' + '<pre>' + escapeExpression(err.message || err) + '</pre>';
return `<h1>${common.i18n.t('errors.errors.oopsErrorTemplateHasError')}</h1>
<p>${common.i18n.t('errors.errors.encounteredError')}</p>
<pre>${escapeExpression(err.message || err)}</pre>
<br ><p>${common.i18n.t('errors.errors.whilstTryingToRender')}</p>
${err.statusCode} <pre>${escapeExpression(err.message || err)}</pre>`;
};

_private.ThemeErrorRenderer = function ThemeErrorRenderer(err, req, res, next) {
Expand All @@ -92,7 +91,7 @@ _private.ThemeErrorRenderer = function ThemeErrorRenderer(err, req, res, next) {

// Renderer begin
// Format Data
var data = {
const data = {
message: err.message,
// @deprecated Remove in Ghost 3.0
code: err.statusCode,
Expand All @@ -107,7 +106,7 @@ _private.ThemeErrorRenderer = function ThemeErrorRenderer(err, req, res, next) {
// It can be that something went wrong with the theme or otherwise loading handlebars
// This ensures that no matter what res.render will work here
// @TODO: split the error handler for assets, admin & theme to refactor this away
if (_.isEmpty(req.app.engines)) {
if (!req.app.engines || Object.keys(req.app.engines).length === 0) {
res._template = 'error';
req.app.engine('hbs', _private.createHbsEngine());
req.app.set('view engine', 'hbs');
Expand All @@ -131,7 +130,7 @@ _private.ThemeErrorRenderer = function ThemeErrorRenderer(err, req, res, next) {
};

_private.HTMLErrorRenderer = function HTMLErrorRender(err, req, res, next) { // eslint-disable-line no-unused-vars
var data = {
const data = {
message: err.message,
statusCode: err.statusCode,
errorDetails: err.errorDetails || []
Expand All @@ -140,7 +139,7 @@ _private.HTMLErrorRenderer = function HTMLErrorRender(err, req, res, next) { //
// e.g. if you serve the admin /ghost and Ghost returns a 503 because it generates the urls at the moment.
// This ensures that no matter what res.render will work here
// @TODO: put to prepare error function?
if (_.isEmpty(req.app.engines)) {
if (!req.app.engines || req.app.engines.length === 0) {
res._template = 'error';
req.app.engine('hbs', _private.createHbsEngine());
req.app.set('view engine', 'hbs');
Expand Down
2 changes: 1 addition & 1 deletion core/server/web/middleware/frontend-client.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var api = require('../../api'),
const api = require('../../api'),
labs = require('../../services/labs'),
common = require('../../lib/common');

Expand Down
2 changes: 1 addition & 1 deletion core/server/web/middleware/ghost-locals.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var ghostVersion = require('../../lib/ghost-version');
const ghostVersion = require('../../lib/ghost-version');

// ### GhostLocals Middleware
// Expose the standard locals that every request will need to have available
Expand Down
7 changes: 3 additions & 4 deletions core/server/web/middleware/labs.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
var labsUtil = require('../../services/labs'),
common = require('../../lib/common'),
labs;
const labsUtil = require('../../services/labs'),
common = require('../../lib/common');

labs = {
const labs = {
subscribers: function subscribers(req, res, next) {
if (labsUtil.isSet('subscribers') === true) {
return next();
Expand Down
4 changes: 2 additions & 2 deletions core/server/web/middleware/log-request.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
var uuid = require('uuid'),
const uuid = require('uuid'),
common = require('../../lib/common');

/**
* @TODO:
* - move middleware to ignition?
*/
module.exports = function logRequest(req, res, next) {
var startTime = Date.now(),
const startTime = Date.now(),
requestId = req.get('X-Request-ID') || uuid.v1();

function logResponse() {
Expand Down
2 changes: 1 addition & 1 deletion core/server/web/middleware/maintenance.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var config = require('../../config'),
const config = require('../../config'),
common = require('../../lib/common'),
urlService = require('../../services/url');

Expand Down
2 changes: 1 addition & 1 deletion core/server/web/middleware/pretty-urls.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
// Uncapitalise changes case to lowercase
// @TODO optimise this to reduce the number of redirects required to get to a pretty URL
// @TODO move this to being used by routers?
var slashes = require('connect-slashes'),
const slashes = require('connect-slashes'),
config = require('../../config');

module.exports = [
Expand Down
16 changes: 8 additions & 8 deletions core/server/web/middleware/serve-favicon.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
var fs = require('fs-extra'),
const fs = require('fs-extra'),
path = require('path'),
crypto = require('crypto'),
config = require('../../config'),
imageLib = require('../../lib/image'),
storage = require('../../adapters/storage'),
urlService = require('../../services/url'),
settingsCache = require('../../services/settings/cache'),
buildContentResponse,
content;
settingsCache = require('../../services/settings/cache');

buildContentResponse = function buildContentResponse(ext, buf) {
let content;

const buildContentResponse = function buildContentResponse(ext, buf) {
content = {
headers: {
'Content-Type': 'image/' + ext,
Expand All @@ -26,7 +26,7 @@ buildContentResponse = function buildContentResponse(ext, buf) {
// ### serveFavicon Middleware
// Handles requests to favicon.png and favicon.ico
function serveFavicon() {
var iconType,
let iconType,
filePath;

return function serveFavicon(req, res, next) {
Expand All @@ -39,8 +39,8 @@ function serveFavicon() {
// in this case we don't use path rewrite, that's why we have to make it manually
filePath = imageLib.blogIcon.getIconPath();

var originalExtension = path.extname(filePath).toLowerCase(),
requestedExtension = path.extname(req.path).toLowerCase();
let originalExtension = path.extname(filePath).toLowerCase();
const requestedExtension = path.extname(req.path).toLowerCase();

// CASE: custom favicon exists, load it from local file storage
if (settingsCache.get('icon')) {
Expand Down
10 changes: 4 additions & 6 deletions core/server/web/middleware/serve-public-file.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var crypto = require('crypto'),
const crypto = require('crypto'),
fs = require('fs-extra'),
path = require('path'),
config = require('../../config'),
Expand All @@ -7,14 +7,12 @@ var crypto = require('crypto'),
// ### servePublicFile Middleware
// Handles requests to robots.txt and favicon.ico (and caches them)
function servePublicFile(file, type, maxAge) {
var content,
publicFilePath = config.get('paths').publicFilePath,
filePath,
let content;
const publicFilePath = config.get('paths').publicFilePath,
filePath = file.match(/^public/) ? path.join(publicFilePath, file.replace(/^public/, '')) : path.join(publicFilePath, file),
blogRegex = /(\{\{blog-url\}\})/g,
apiRegex = /(\{\{api-url\}\})/g;

filePath = file.match(/^public/) ? path.join(publicFilePath, file.replace(/^public/, '')) : path.join(publicFilePath, file);

return function servePublicFile(req, res, next) {
if (req.path === '/' + file) {
if (content) {
Expand Down
13 changes: 6 additions & 7 deletions core/server/web/middleware/static-theme.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,27 @@
var _ = require('lodash'),
express = require('express'),
const express = require('express'),
path = require('path'),
config = require('../../config'),
constants = require('../../lib/constants'),
themeUtils = require('../../services/themes');

function isBlackListedFileType(file) {
var blackListedFileTypes = ['.hbs', '.md', '.json'],
const blackListedFileTypes = ['.hbs', '.md', '.json'],
ext = path.extname(file);
return _.includes(blackListedFileTypes, ext);
return blackListedFileTypes.includes(ext);
}

function isWhiteListedFile(file) {
var whiteListedFiles = ['manifest.json'],
const whiteListedFiles = ['manifest.json'],
base = path.basename(file);
return _.includes(whiteListedFiles, base);
return whiteListedFiles.includes(base);
}

function forwardToExpressStatic(req, res, next) {
if (!themeUtils.getActive()) {
return next();
}

var configMaxAge = config.get('caching:theme:maxAge');
const configMaxAge = config.get('caching:theme:maxAge');

express.static(themeUtils.getActive().path,
{maxAge: (configMaxAge || configMaxAge === 0) ? configMaxAge : constants.ONE_YEAR_MS}
Expand Down
19 changes: 10 additions & 9 deletions core/server/web/middleware/uncapitalise.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,17 @@
// req.baseUrl = /blog
// req.path = /ghost/signin/

var urlService = require('../../services/url'),
const urlService = require('../../services/url'),
common = require('../../lib/common'),
localUtils = require('../utils'),
uncapitalise;

uncapitalise = function uncapitalise(req, res, next) {
var pathToTest = (req.baseUrl ? req.baseUrl : '') + req.path,
isSignupOrReset = pathToTest.match(/^(.*\/ghost\/(signup|reset)\/)/i),
isAPI = pathToTest.match(/^(.*\/ghost\/api\/v[\d\.]+\/.*?\/)/i),
redirectPath, decodedURI;
localUtils = require('../utils');

const uncapitalise = function uncapitalise(req, res, next) {
let pathToTest = (req.baseUrl ? req.baseUrl : '') + req.path,
redirectPath,
decodedURI;

const isSignupOrReset = pathToTest.match(/^(.*\/ghost\/(signup|reset)\/)/i),
isAPI = pathToTest.match(/^(.*\/ghost\/api\/v[\d\.]+\/.*?\/)/i);

if (isSignupOrReset) {
pathToTest = isSignupOrReset[1];
Expand Down
Loading

0 comments on commit 5e96393

Please sign in to comment.