refactor: use renderHeaderType instead of two variables

add middleware.admin.buildHeaderAsync so it can be called manually with await middleware.admin.buildHeaderAsync(req, res)
This commit is contained in:
Barış Soner Uşaklı
2026-04-08 11:19:13 -04:00
parent 4366bdd0d8
commit 55290da01a
3 changed files with 19 additions and 10 deletions

View File

@@ -17,14 +17,23 @@ const controllers = {
const middleware = module.exports;
middleware.buildHeader = helpers.try(async (req, res, next) => {
res.locals.renderAdminHeader = true;
await doBuildHeader(req, res);
next();
});
middleware.buildHeaderAsync = async (req, res) => {
await doBuildHeader(req, res);
};
async function doBuildHeader(req, res) {
res.locals.renderHeaderType = 'admin';
res.locals.isAPI = false;
if (req.method === 'GET') {
await require('./index').applyCSRFasync(req, res);
}
await plugins.hooks.fire('filter:middleware.buildAdminHeader', { req: req, locals: res.locals });
res.locals.config = await controllers.admin.loadConfig(req);
next();
});
}
middleware.checkPrivileges = helpers.try(async (req, res, next) => {
// Kick out guests, obviously

View File

@@ -19,7 +19,7 @@ middleware.buildHeaderAsync = async (req, res) => {
};
async function doBuildHeader(req, res) {
res.locals.renderHeader = true;
res.locals.renderHeaderType = 'client';
res.locals.isAPI = false;
if (req.method === 'GET') {
await require('./index').applyCSRFasync(req, res);

View File

@@ -139,9 +139,9 @@ module.exports = function (middleware) {
}
async function loadHeaderFooterData(req, res, options) {
if (res.locals.renderHeader) {
if (res.locals.renderHeaderType === 'client') {
return await loadClientHeaderFooterData(req, res, options);
} else if (res.locals.renderAdminHeader) {
} else if (res.locals.renderHeaderType === 'admin') {
return await loadAdminHeaderFooterData(req, res, options);
}
return null;
@@ -382,13 +382,13 @@ module.exports = function (middleware) {
async function renderHeaderFooter(method, req, res, options, headerFooterData) {
let str = '';
if (res.locals.renderHeader) {
if (res.locals.renderHeaderType === 'client') {
if (method === 'renderHeader') {
str = await renderHeader(req, res, options, headerFooterData);
} else if (method === 'renderFooter') {
str = await renderFooter(req, res, options, headerFooterData);
}
} else if (res.locals.renderAdminHeader) {
} else if (res.locals.renderHeaderType === 'admin') {
if (method === 'renderHeader') {
str = await renderAdminHeader(req, res, options, headerFooterData);
} else if (method === 'renderFooter') {
@@ -400,7 +400,7 @@ module.exports = function (middleware) {
function getLang(req, res) {
let language = (res.locals.config && res.locals.config.userLang) || 'en-GB';
if (res.locals.renderAdminHeader) {
if (res.locals.renderHeaderType === 'admin') {
language = (res.locals.config && res.locals.config.acpLang) || 'en-GB';
}
return req.query.lang ? validator.escape(String(req.query.lang)) : language;