fix: #12227, fix crash in redirect

This commit is contained in:
Barış Soner Uşaklı
2023-12-13 13:18:07 -05:00
parent e49ddaf815
commit 2dc1def51f
3 changed files with 16 additions and 14 deletions

View File

@@ -1,6 +1,5 @@
'use strict'; 'use strict';
const user = require('../user');
const plugins = require('../plugins'); const plugins = require('../plugins');
const helpers = require('./helpers'); 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 }); await plugins.hooks.fire('filter:middleware.buildHeader', { req: req, locals: res.locals });
const [config, canLoginIfBanned] = await Promise.all([ res.locals.config = await controllers.api.loadConfig(req);
controllers.api.loadConfig(req),
user.bans.canLoginIfBanned(req.uid),
]);
if (!canLoginIfBanned && req.loggedIn) {
req.logout(() => {
res.redirect('/');
});
return;
}
res.locals.config = config;
} }

View File

@@ -221,6 +221,20 @@ module.exports = function (middleware) {
controllers.helpers.redirect(res, path); 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) { middleware.requireUser = function (req, res, next) {
if (req.loggedIn) { if (req.loggedIn) {
return next(); return next();

View File

@@ -18,6 +18,7 @@ helpers.setupPageRoute = function (...args) {
middlewares = [ middlewares = [
middleware.applyBlacklist, middleware.applyBlacklist,
middleware.authenticateRequest, middleware.authenticateRequest,
middleware.redirectToHomeIfBanned,
middleware.maintenanceMode, middleware.maintenanceMode,
middleware.registrationComplete, middleware.registrationComplete,
middleware.pluginHooks, middleware.pluginHooks,