mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 08:36:12 +01:00
fix: special handling for privsTopics.canPurge for remote posts
This commit is contained in:
@@ -9,6 +9,7 @@ const user = require('../user');
|
|||||||
const helpers = require('./helpers');
|
const helpers = require('./helpers');
|
||||||
const categories = require('../categories');
|
const categories = require('../categories');
|
||||||
const plugins = require('../plugins');
|
const plugins = require('../plugins');
|
||||||
|
const activitypub = require('../activitypub');
|
||||||
const privsCategories = require('./categories');
|
const privsCategories = require('./categories');
|
||||||
|
|
||||||
const privsTopics = module.exports;
|
const privsTopics = module.exports;
|
||||||
@@ -123,12 +124,18 @@ privsTopics.filterUids = async function (privilege, tid, uids) {
|
|||||||
|
|
||||||
privsTopics.canPurge = async function (tid, uid) {
|
privsTopics.canPurge = async function (tid, uid) {
|
||||||
const cid = await topics.getTopicField(tid, 'cid');
|
const cid = await topics.getTopicField(tid, 'cid');
|
||||||
const [purge, owner, isAdmin, isModerator] = await Promise.all([
|
let [purge, owner, isAdmin, isModerator] = await Promise.all([
|
||||||
privsCategories.isUserAllowedTo('purge', cid, uid),
|
privsCategories.isUserAllowedTo('purge', cid, uid),
|
||||||
topics.isOwner(tid, uid),
|
topics.isOwner(tid, uid),
|
||||||
user.isAdministrator(uid),
|
user.isAdministrator(uid),
|
||||||
user.isModerator(uid, cid),
|
user.isModerator(uid, cid),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// Allow remote posts to purge themselves (as:Delete received)
|
||||||
|
if (activitypub.helpers.isUri(tid) && owner) {
|
||||||
|
purge = true;
|
||||||
|
}
|
||||||
|
|
||||||
return (purge && (owner || isModerator)) || isAdmin;
|
return (purge && (owner || isModerator)) || isAdmin;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user