Better fix for #5993 (#6034)

* Better fix for #5993

Also a nice newline so the line doesn't get overwritten when running `./nodebb upgrade`

* Optimizations for custom homepage

Move it into a separate module
This commit is contained in:
Peter Jaszkowiak
2017-11-04 08:51:44 -06:00
committed by Barış Soner Uşaklı
parent 9728b80c38
commit bbdc55cb3a
6 changed files with 125 additions and 91 deletions

62
src/controllers/home.js Normal file
View File

@@ -0,0 +1,62 @@
'use strict';
var plugins = require('../plugins');
var meta = require('../meta');
var user = require('../user');
var pubsub = require('../pubsub');
var adminHomePageRoute;
var getRoute;
function configUpdated() {
adminHomePageRoute = (meta.config.homePageRoute || meta.config.homePageCustom || '').replace(/^\/+/, '') || 'categories';
getRoute = parseInt(meta.config.allowUserHomePage, 10) ? getRouteAllowUserHomePage : getRouteDisableUserHomePage;
}
function getRouteDisableUserHomePage(uid, next) {
next(null, adminHomePageRoute);
}
function getRouteAllowUserHomePage(uid, next) {
user.getSettings(uid, function (err, settings) {
if (err) {
return next(err);
}
var route = adminHomePageRoute;
if (settings.homePageRoute !== 'undefined' && settings.homePageRoute !== 'none') {
route = settings.homePageRoute || route;
}
next(null, route);
});
}
pubsub.on('config:update', configUpdated);
configUpdated();
module.exports = function (req, res, next) {
if (req.path !== '/' && req.path !== '/api/') {
return next();
}
getRoute(req.uid, function (err, route) {
if (err) {
return next(err);
}
var hook = 'action:homepage.get:' + route;
if (plugins.hasListeners(hook)) {
return plugins.fireHook(hook, {
req: req,
res: res,
next: next,
});
}
req.url = req.path + route;
next();
});
};