From 3b08cc684b8cf7ede2c535a85cb3d7e1674ed5c9 Mon Sep 17 00:00:00 2001 From: Thomas Lynch Date: Sat, 29 Oct 2022 01:12:50 +1100 Subject: [PATCH] Start on ban notes --- lib/middleware/permission/bancheck.js | 1 + lib/post/filteractions.js | 5 +++-- models/forms/banposter.js | 1 + models/forms/editpost.js | 4 ++-- models/forms/makepost.js | 6 +++--- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/middleware/permission/bancheck.js b/lib/middleware/permission/bancheck.js index 95634f9d..94e2f5af 100644 --- a/lib/middleware/permission/bancheck.js +++ b/lib/middleware/permission/bancheck.js @@ -23,6 +23,7 @@ module.exports = async (req, res, next) => { const unseenBans = bans.filter(b => !b.seen).map(b => b._id); await Bans.markSeen(unseenBans); //mark bans as seen bans.forEach(ban => { + ban.note = null; ban.ip.raw = null; ban.issuer = ban.showUser === true ? ban.issuer : null; ban.seen = true; diff --git a/lib/post/filteractions.js b/lib/post/filteractions.js index aa46742e..8aeda47c 100644 --- a/lib/post/filteractions.js +++ b/lib/post/filteractions.js @@ -4,7 +4,7 @@ const { Bans } = require(__dirname+'/../../db/') , dynamicResponse = require(__dirname+'/../misc/dynamic.js'); //ehhh, kinda too many args -module.exports = async (req, res, hitGlobalFilter, boardFilterMode, globalFilterMode, +module.exports = async (req, res, hitGlobalFilter, hitLocalFilter, boardFilterMode, globalFilterMode, boardFilterBanDuration, globalFilterBanDuration, filterBanAppealable, redirect) => { //global filter mode takes prio @@ -36,7 +36,8 @@ module.exports = async (req, res, hitGlobalFilter, boardFilterMode, globalFilter 'expireAt': banExpiry, 'allowAppeal': hitGlobalFilter ? filterBanAppealable : true, 'showUser': true, - 'seen': false + 'note': `${hitGlobalFilter ? 'global ' :''}filter hit: "${hitGlobalFilter || hitLocalFilter}"`, + 'seen': false, }; const insertedResult = await Bans.insertOne(ban); //add and delete some props for the dynamic response diff --git a/models/forms/banposter.js b/models/forms/banposter.js index eb0de2a3..d0c48d60 100644 --- a/models/forms/banposter.js +++ b/models/forms/banposter.js @@ -59,6 +59,7 @@ module.exports = async (req, res) => { allowAppeal, 'appeal': null, 'showUser': !req.body.hide_name, + 'note': null, 'seen': false, }); } diff --git a/models/forms/editpost.js b/models/forms/editpost.js index 2ee5c6c0..e97ccebb 100644 --- a/models/forms/editpost.js +++ b/models/forms/editpost.js @@ -34,10 +34,10 @@ todo: handle some more situations if (filters.length > 0 && filterMode > 0) { let hitGlobalFilter = false; const { strictCombinedString } = getFilterStrings(req, res, strictFiltering); - hitGlobalFilter = filters.some(filter => { return strictCombinedString.includes(filter.toLowerCase()); }); + hitGlobalFilter = filters.find(filter => { return strictCombinedString.includes(filter.toLowerCase()); }); //block/ban edit if (hitGlobalFilter) { - return filterActions(req, res, hitGlobalFilter, 0, filterMode, + return filterActions(req, res, hitGlobalFilter, null, 0, filterMode, 0, filterBanDuration, filterBanAppealable, null); } } diff --git a/models/forms/makepost.js b/models/forms/makepost.js index 5da6a7f0..df263a9e 100644 --- a/models/forms/makepost.js +++ b/models/forms/makepost.js @@ -120,20 +120,20 @@ module.exports = async (req, res) => { //compare to global filters if (globalFilters && globalFilters.length > 0 && globalFilterMode > 0) { - hitGlobalFilter = globalFilters.some(filter => { return strictCombinedString.includes(filter.toLowerCase()); }); + hitGlobalFilter = globalFilters.find(filter => { return strictCombinedString.includes(filter.toLowerCase()); }); } //compare to board filters if (!hitGlobalFilter && !res.locals.permissions.get(Permissions.MANAGE_BOARD_GENERAL) && filterMode > 0 && filters && filters.length > 0) { const localFilterContents = res.locals.board.settings.strictFiltering === true ? strictCombinedString : combinedString; - hitLocalFilter = filters.some(filter => { return localFilterContents.includes(filter.toLowerCase()); }); + hitLocalFilter = filters.find(filter => { return localFilterContents.includes(filter.toLowerCase()); }); } //block post/apply bans if an active filter matched if (hitGlobalFilter || hitLocalFilter) { await deleteTempFiles(req).catch(console.error); - return filterActions(req, res, hitGlobalFilter, filterMode, globalFilterMode, + return filterActions(req, res, hitGlobalFilter, hitLocalFilter, filterMode, globalFilterMode, filterBanDuration, globalFilterBanDuration, filterBanAppealable, redirect); }