From 8e23b9d7668cd44162ef1a0a41bbc5bca98a2c18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 1 Jun 2021 11:21:15 -0400 Subject: [PATCH] feat: allow modifying default category privileges --- src/categories/create.js | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/categories/create.js b/src/categories/create.js index 79626b8600..833cf033b1 100644 --- a/src/categories/create.js +++ b/src/categories/create.js @@ -45,17 +45,7 @@ module.exports = function (Categories) { category.backgroundImage = data.backgroundImage; } - const result = await plugins.hooks.fire('filter:category.create', { category: category, data: data }); - category = result.category; - - - await db.setObject('category:' + category.cid, category); - if (!category.descriptionParsed) { - await Categories.parseDescription(category.cid, category.description); - } - await db.sortedSetsAdd(['categories:cid', 'cid:' + parentCid + ':children'], category.order, category.cid); - - const defaultPrivileges = [ + let defaultPrivileges = [ 'groups:find', 'groups:read', 'groups:topics:read', @@ -73,9 +63,31 @@ module.exports = function (Categories) { 'groups:posts:view_deleted', 'groups:purge', ]); - await privileges.categories.give(defaultPrivileges, category.cid, 'registered-users'); - await privileges.categories.give(modPrivileges, category.cid, ['administrators', 'Global Moderators']); - await privileges.categories.give(['groups:find', 'groups:read', 'groups:topics:read'], category.cid, ['guests', 'spiders']); + let guestPrivileges = ['groups:find', 'groups:read', 'groups:topics:read']; + + const result = await plugins.hooks.fire('filter:category.create', { + category: category, + data: data, + defaultPrivileges: defaultPrivileges, + modPrivileges: modPrivileges, + guestPrivileges: guestPrivileges, + }); + category = result.category; + + await db.setObject(`category:${category.cid}`, category); + if (!category.descriptionParsed) { + await Categories.parseDescription(category.cid, category.description); + } + + await db.sortedSetAddBulk([ + ['categories:cid', category.order, category.cid], + [`cid:${parentCid}:children`, category.order, category.cid], + ['categories:name', 0, `${data.name.substr(0, 200).toLowerCase()}:${category.cid}`], + ]); + + await privileges.categories.give(result.defaultPrivileges, category.cid, 'registered-users'); + await privileges.categories.give(result.modPrivileges, category.cid, ['administrators', 'Global Moderators']); + await privileges.categories.give(result.guestPrivileges, category.cid, ['guests', 'spiders']); cache.del(['categories:cid', 'cid:' + parentCid + ':children']); if (data.cloneFromCid && parseInt(data.cloneFromCid, 10)) {