diff --git a/src/middleware/header.js b/src/middleware/header.js index b6c4e47ec0..383ef8e94e 100644 --- a/src/middleware/header.js +++ b/src/middleware/header.js @@ -1,6 +1,5 @@ 'use strict'; -const user = require('../user'); const plugins = require('../plugins'); const helpers = require('./helpers'); @@ -27,17 +26,5 @@ async function doBuildHeader(req, res) { } await plugins.hooks.fire('filter:middleware.buildHeader', { req: req, locals: res.locals }); - const [config, canLoginIfBanned] = await Promise.all([ - controllers.api.loadConfig(req), - user.bans.canLoginIfBanned(req.uid), - ]); - - if (!canLoginIfBanned && req.loggedIn) { - req.logout(() => { - res.redirect('/'); - }); - return; - } - - res.locals.config = config; + res.locals.config = await controllers.api.loadConfig(req); } diff --git a/src/middleware/user.js b/src/middleware/user.js index 1220897ffc..a9573e397c 100644 --- a/src/middleware/user.js +++ b/src/middleware/user.js @@ -221,6 +221,20 @@ module.exports = function (middleware) { controllers.helpers.redirect(res, path); }); + middleware.redirectToHomeIfBanned = helpers.try(async (req, res, next) => { + if (req.loggedIn) { + const canLoginIfBanned = await user.bans.canLoginIfBanned(req.uid); + if (!canLoginIfBanned) { + req.logout(() => { + res.redirect('/'); + }); + return; + } + } + + next(); + }); + middleware.requireUser = function (req, res, next) { if (req.loggedIn) { return next(); diff --git a/src/routes/helpers.js b/src/routes/helpers.js index aff46467ec..b43f53fd3e 100644 --- a/src/routes/helpers.js +++ b/src/routes/helpers.js @@ -18,6 +18,7 @@ helpers.setupPageRoute = function (...args) { middlewares = [ middleware.applyBlacklist, middleware.authenticateRequest, + middleware.redirectToHomeIfBanned, middleware.maintenanceMode, middleware.registrationComplete, middleware.pluginHooks,