From 187c38991eb070246c533cefc2afea72735259a3 Mon Sep 17 00:00:00 2001 From: Hannah Wolfe Date: Wed, 8 Nov 2017 09:14:46 +0000 Subject: [PATCH] Move admin redirects out of site router refs #9192 - Admin redirects should really happen first, up with custom redirects - Later we can package this up, maybe - For now, let's focus the site router on site-related things --- core/server/middleware/admin-redirects.js | 21 +++++++++++++++++++++ core/server/site/app.js | 3 +++ core/server/site/routes.js | 7 ------- 3 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 core/server/middleware/admin-redirects.js diff --git a/core/server/middleware/admin-redirects.js b/core/server/middleware/admin-redirects.js new file mode 100644 index 0000000000..97e08364de --- /dev/null +++ b/core/server/middleware/admin-redirects.js @@ -0,0 +1,21 @@ +var express = require('express'), + utils = require('../utils'), + adminRedirect; + +adminRedirect = function adminRedirect(path) { + return function doRedirect(req, res) { + return utils.url.redirectToAdmin(301, res, path); + }; +}; + +module.exports = function adminRedirects() { + var router = express.Router(); + // Admin redirects - register redirect as route + // TODO: this should be middleware! + router.get(/^\/(logout|signout)\/$/, adminRedirect('#/signout/')); + router.get(/^\/signup\/$/, adminRedirect('#/signup/')); + // redirect to /ghost and let that do the authentication to prevent redirects to /ghost//admin etc. + router.get(/^\/((ghost-admin|admin|wp-admin|dashboard|signin|login)\/?)$/, adminRedirect('/')); + + return router; +}; diff --git a/core/server/site/app.js b/core/server/site/app.js index 1510d39f84..0af271cdbc 100644 --- a/core/server/site/app.js +++ b/core/server/site/app.js @@ -26,6 +26,7 @@ var debug = require('ghost-ignition').debug('blog'), staticTheme = require('../middleware/static-theme'), customRedirects = require('../middleware/custom-redirects'), serveFavicon = require('../middleware/serve-favicon'), + adminRedirects = require('../middleware/admin-redirects'), // middleware for themes themeMiddleware = require('../themes').middleware; @@ -42,6 +43,8 @@ module.exports = function setupSiteApp() { // you can extend Ghost with a custom redirects file // see https://github.com/TryGhost/Ghost/issues/7707 customRedirects.use(siteApp); + // More redirects + siteApp.use(adminRedirects()); // Static content/assets // @TODO make sure all of these have a local 404 error handler diff --git a/core/server/site/routes.js b/core/server/site/routes.js index abd7f63266..05d691535b 100644 --- a/core/server/site/routes.js +++ b/core/server/site/routes.js @@ -9,13 +9,6 @@ module.exports = function siteRouter() { var router = express.Router(), routeKeywords = config.get('routeKeywords'); - // Admin redirects - register redirect as route - // TODO: this should be middleware! - router.get(/^\/(logout|signout)\/$/, function (req, res) { return utils.url.redirectToAdmin(301, res, '#/signout/'); }); - router.get(/^\/signup\/$/, function (req, res) { return utils.url.redirectToAdmin(301, res, '#/signup/'); }); - // redirect to /ghost and let that do the authentication to prevent redirects to /ghost//admin etc. - router.get(/^\/((ghost-admin|admin|wp-admin|dashboard|signin|login)\/?)$/, function (req, res) { return utils.url.redirectToAdmin(301, res, '/'); }); - // Preview - register controller as route router.get(utils.url.urlJoin('/', routeKeywords.preview, ':uuid', ':options?'), controllers.preview);