From e42b152f16ddb3d23e32597747fa5b75c3aead4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Sun, 21 Mar 2021 21:38:08 -0400 Subject: [PATCH] fix: #9414, use posts:view_deleted --- public/openapi/read/category/category_id.yaml | 2 ++ src/categories/topics.js | 2 +- src/privileges/categories.js | 7 +++++-- src/privileges/topics.js | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/public/openapi/read/category/category_id.yaml b/public/openapi/read/category/category_id.yaml index 90a1e80427..1e6ce9b637 100644 --- a/public/openapi/read/category/category_id.yaml +++ b/public/openapi/read/category/category_id.yaml @@ -72,6 +72,8 @@ get: type: boolean read: type: boolean + posts:view_deleted: + type: boolean cid: type: string uid: diff --git a/src/categories/topics.js b/src/categories/topics.js index 33097b6fe8..b874e0bf5c 100644 --- a/src/categories/topics.js +++ b/src/categories/topics.js @@ -147,7 +147,7 @@ module.exports = function (Categories) { }; Categories.modifyTopicsByPrivilege = function (topics, privileges) { - if (!Array.isArray(topics) || !topics.length || privileges.isAdminOrMod) { + if (!Array.isArray(topics) || !topics.length || privileges.view_deleted) { return; } diff --git a/src/privileges/categories.js b/src/privileges/categories.js index 0dbe715071..ff7605cd9f 100644 --- a/src/privileges/categories.js +++ b/src/privileges/categories.js @@ -78,7 +78,10 @@ privsCategories.list = async function (cid) { }; privsCategories.get = async function (cid, uid) { - const privs = ['topics:create', 'topics:read', 'topics:tag', 'read']; + const privs = [ + 'topics:create', 'topics:read', 'topics:tag', + 'read', 'posts:view_deleted', + ]; const [userPrivileges, isAdministrator, isModerator] = await Promise.all([ helpers.isAllowedTo(privs, uid, cid), @@ -95,7 +98,7 @@ privsCategories.get = async function (cid, uid) { cid: cid, uid: uid, editable: isAdminOrMod, - view_deleted: isAdminOrMod, + view_deleted: isAdminOrMod || privData['posts:view_deleted'], isAdminOrMod: isAdminOrMod, }); }; diff --git a/src/privileges/topics.js b/src/privileges/topics.js index 52a4af2c31..10ffdc5591 100644 --- a/src/privileges/topics.js +++ b/src/privileges/topics.js @@ -49,7 +49,7 @@ privsTopics.get = async function (tid, uid) { view_thread_tools: editable || deletable, editable: editable, deletable: deletable, - view_deleted: isAdminOrMod || isOwner, + view_deleted: isAdminOrMod || isOwner || privData['posts:view_deleted'], isAdminOrMod: isAdminOrMod, disabled: disabled, tid: tid,