mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-01-25 08:49:51 +01:00
fix: escape config.userLang/acpLang, don't allow invalid language codes
This commit is contained in:
@@ -86,8 +86,8 @@ apiController.loadConfig = async function (req) {
|
||||
config.usePagination = settings.usePagination;
|
||||
config.topicsPerPage = settings.topicsPerPage;
|
||||
config.postsPerPage = settings.postsPerPage;
|
||||
config.userLang = (req.query.lang ? validator.escape(String(req.query.lang)) : null) || settings.userLang || config.defaultLang;
|
||||
config.acpLang = (req.query.lang ? validator.escape(String(req.query.lang)) : null) || settings.acpLang;
|
||||
config.userLang = validator.escape(String((req.query.lang ? req.query.lang : null) || settings.userLang || config.defaultLang));
|
||||
config.acpLang = validator.escape(String((req.query.lang ? req.query.lang : null) || settings.acpLang));
|
||||
config.openOutgoingLinksInNewTab = settings.openOutgoingLinksInNewTab;
|
||||
config.topicPostSort = settings.topicPostSort || config.topicPostSort;
|
||||
config.categoryTopicSort = settings.categoryTopicSort || config.categoryTopicSort;
|
||||
|
||||
@@ -5,6 +5,7 @@ const meta = require('../meta');
|
||||
const db = require('../database');
|
||||
const plugins = require('../plugins');
|
||||
const notifications = require('../notifications');
|
||||
const languages = require('../languages');
|
||||
|
||||
module.exports = function (User) {
|
||||
User.getSettings = async function (uid) {
|
||||
@@ -87,6 +88,13 @@ module.exports = function (User) {
|
||||
throw new Error('[[error:invalid-pagination-value, 2, ' + maxTopicsPerPage + ']]');
|
||||
}
|
||||
|
||||
const languageCodes = await languages.listCodes();
|
||||
if (data.userLang && !languageCodes.includes(data.userLang)) {
|
||||
throw new Error('[[error:invalid-language]]');
|
||||
}
|
||||
if (data.acpLang && !languageCodes.includes(data.acpLang)) {
|
||||
throw new Error('[[error:invalid-language]]');
|
||||
}
|
||||
data.userLang = data.userLang || meta.config.defaultLang;
|
||||
|
||||
plugins.fireHook('action:user.saveSettings', { uid: uid, settings: data });
|
||||
|
||||
Reference in New Issue
Block a user