mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-01 05:50:35 +03:00
abda6e6338
closes #10773 - The refactoring is a substitute for `urlService.utils` used previously throughout the codebase and now extracted into the separate module in Ghost-SDK - Added url-utils stubbing utility for test suites - Some tests had to be refactored to avoid double mocks (when url's are being reset inside of rested 'describe' groups)
59 lines
2.2 KiB
JavaScript
59 lines
2.2 KiB
JavaScript
const debug = require('ghost-ignition').debug('web:admin:app');
|
|
const express = require('express');
|
|
const serveStatic = require('express').static;
|
|
const config = require('../../config');
|
|
const constants = require('../../lib/constants');
|
|
const urlUtils = require('../../lib/url-utils');
|
|
const shared = require('../shared');
|
|
const adminMiddleware = require('./middleware');
|
|
|
|
module.exports = function setupAdminApp() {
|
|
debug('Admin setup start');
|
|
const adminApp = express();
|
|
|
|
// Admin assets
|
|
// @TODO ensure this gets a local 404 error handler
|
|
const configMaxAge = config.get('caching:admin:maxAge');
|
|
adminApp.use('/assets', serveStatic(
|
|
config.get('paths').clientAssets,
|
|
{maxAge: (configMaxAge || configMaxAge === 0) ? configMaxAge : constants.ONE_YEAR_MS, fallthrough: false}
|
|
));
|
|
|
|
// Service Worker for offline support
|
|
adminApp.get(/^\/(sw.js|sw-registration.js)$/, require('./serviceworker'));
|
|
|
|
// Ember CLI's live-reload script
|
|
if (config.get('env') === 'development') {
|
|
adminApp.get('/ember-cli-live-reload.js', function emberLiveReload(req, res) {
|
|
res.redirect(`http://localhost:4200${urlUtils.getSubdir()}/ghost/ember-cli-live-reload.js`);
|
|
});
|
|
}
|
|
|
|
// Render error page in case of maintenance
|
|
adminApp.use(shared.middlewares.maintenance);
|
|
|
|
// Force SSL if required
|
|
// must happen AFTER asset loading and BEFORE routing
|
|
adminApp.use(shared.middlewares.urlRedirects.adminRedirect);
|
|
|
|
// Add in all trailing slashes & remove uppercase
|
|
// must happen AFTER asset loading and BEFORE routing
|
|
adminApp.use(shared.middlewares.prettyUrls);
|
|
|
|
// Cache headers go last before serving the request
|
|
// Admin is currently set to not be cached at all
|
|
adminApp.use(shared.middlewares.cacheControl('private'));
|
|
// Special redirects for the admin (these should have their own cache-control headers)
|
|
adminApp.use(adminMiddleware);
|
|
|
|
// Finally, routing
|
|
adminApp.get('*', require('./controller'));
|
|
|
|
adminApp.use(shared.middlewares.errorHandler.pageNotFound);
|
|
adminApp.use(shared.middlewares.errorHandler.handleHTMLResponse);
|
|
|
|
debug('Admin setup end');
|
|
|
|
return adminApp;
|
|
};
|