fix: dont show system tags in whitelist dropdown to regular users

v1.18.x
Barış Soner Uşaklı 4 years ago
parent 84e065752f
commit 0d975bc4fb

@ -9,6 +9,7 @@ const groups = require('../groups');
const plugins = require('../plugins'); const plugins = require('../plugins');
const privileges = require('../privileges'); const privileges = require('../privileges');
const cache = require('../cache'); const cache = require('../cache');
const meta = require('../meta');
const Categories = module.exports; const Categories = module.exports;
@ -175,6 +176,15 @@ Categories.getTagWhitelist = async function (cids) {
return cids.map(cid => cachedData[cid]); return cids.map(cid => cachedData[cid]);
}; };
// remove system tags from tag whitelist for non privileged user
Categories.filterTagWhitelist = function (tagWhitelist, isAdminOrMod) {
const systemTags = (meta.config.systemTags || '').split(',');
if (!isAdminOrMod && systemTags.length) {
return tagWhitelist.filter(tag => !systemTags.includes(tag));
}
return tagWhitelist;
};
function calculateTopicPostCount(category) { function calculateTopicPostCount(category) {
if (!category) { if (!category) {
return; return;

@ -95,6 +95,7 @@ categoryController.get = async function (req, res, next) {
} }
categories.modifyTopicsByPrivilege(categoryData.topics, userPrivileges); categories.modifyTopicsByPrivilege(categoryData.topics, userPrivileges);
categoryData.tagWhitelist = categories.filterTagWhitelist(categoryData.tagWhitelist, userPrivileges.isAdminOrMod);
await buildBreadcrumbs(req, categoryData); await buildBreadcrumbs(req, categoryData);
if (categoryData.children.length) { if (categoryData.children.length) {

@ -80,6 +80,7 @@ topicsController.get = async function getTopic(req, res, callback) {
await topics.getTopicWithPosts(topicData, set, req.uid, start, stop, reverse); await topics.getTopicWithPosts(topicData, set, req.uid, start, stop, reverse);
topics.modifyPostsByPrivilege(topicData, userPrivileges); topics.modifyPostsByPrivilege(topicData, userPrivileges);
topicData.tagWhitelist = categories.filterTagWhitelist(topicData.tagWhitelist, userPrivileges.isAdminOrMod);
topicData.privileges = userPrivileges; topicData.privileges = userPrivileges;
topicData.topicStaleDays = meta.config.topicStaleDays; topicData.topicStaleDays = meta.config.topicStaleDays;

Loading…
Cancel
Save