diff --git a/src/categories/create.js b/src/categories/create.js index 24c0927d2f..68cf6638b8 100644 --- a/src/categories/create.js +++ b/src/categories/create.js @@ -2,6 +2,7 @@ var async = require('async'), db = require('../database'), + privileges = require('../privileges'), utils = require('../../public/src/utils'); module.exports = function(Categories) { @@ -33,9 +34,13 @@ module.exports = function(Categories) { imageClass: 'auto' }; + var defaultPrivileges = ['find', 'read', 'topics:create', 'topics:reply']; + async.series([ async.apply(db.setObject, 'category:' + cid, category), - async.apply(db.sortedSetAdd, 'categories:cid', data.order, cid) + async.apply(db.sortedSetAdd, 'categories:cid', data.order, cid), + async.apply(privileges.categories.give, defaultPrivileges, cid, 'administrators'), + async.apply(privileges.categories.give, defaultPrivileges, cid, 'registered-users') ], function(err) { if (err) { return callback(err); diff --git a/src/install.js b/src/install.js index 328750963d..5c00f41c84 100644 --- a/src/install.js +++ b/src/install.js @@ -398,34 +398,6 @@ function createCategories(next) { }); } -function setupPrivileges(next) { - function givePrivileges(privileges, cid, groupName, next) { - async.each(privileges, function(privilege, next) { - Groups.join('cid:' + cid + ':privileges:groups:' + privilege, groupName, next); - }, next); - } - - var Groups = require('./groups'); - var db = require('./database'); - - db.getSortedSetRange('categories:cid', 0, -1, function(err, cids) { - if (err) { - return next(err); - } - - async.each(cids, function(cid, next) { - async.parallel([ - function(next) { - givePrivileges(['find', 'read', 'topics:create', 'topics:reply'], cid, 'administrators', next); - }, - function(next) { - givePrivileges(['find', 'read', 'topics:create', 'topics:reply'], cid, 'registered-users', next); - } - ], next); - }, next); - }); -} - function createWelcomePost(next) { var db = require('./database'), Topics = require('./topics'); @@ -478,7 +450,6 @@ install.setup = function (callback) { enableDefaultTheme, createAdministrator, createCategories, - setupPrivileges, createWelcomePost, enableDefaultPlugins, setCopyrightWidget, diff --git a/src/privileges/categories.js b/src/privileges/categories.js index 309404ac11..94b09ad599 100644 --- a/src/privileges/categories.js +++ b/src/privileges/categories.js @@ -135,6 +135,12 @@ module.exports = function(privileges) { }); }; + privileges.categories.give = function(privileges, cid, groupName, callback) { + async.each(privileges, function(privilege, next) { + groups.join('cid:' + cid + ':privileges:groups:' + privilege, groupName, next); + }, callback); + }; + privileges.categories.isAdminOrMod = function(cids, uid, callback) { async.parallel({ isModerators: function(next) {