From 604dac88e3095b1ea130fe79fab97616d056206d Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 11 Nov 2014 17:25:16 -0500 Subject: [PATCH] closes #2382, closes #2130 --- src/install.js | 41 +++++++++++++++++++++++- src/privileges/helpers.js | 47 +++------------------------- src/upgrade.js | 65 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 108 insertions(+), 45 deletions(-) diff --git a/src/install.js b/src/install.js index 906d6134db..328750963d 100644 --- a/src/install.js +++ b/src/install.js @@ -398,6 +398,34 @@ 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'); @@ -442,7 +470,18 @@ function setCopyrightWidget(next) { } install.setup = function (callback) { - async.series([checkSetupFlag, checkCIFlag, setupConfig, setupDefaultConfigs, enableDefaultTheme, createAdministrator, createCategories, createWelcomePost, enableDefaultPlugins, setCopyrightWidget, + async.series([ + checkSetupFlag, + checkCIFlag, + setupConfig, + setupDefaultConfigs, + enableDefaultTheme, + createAdministrator, + createCategories, + setupPrivileges, + createWelcomePost, + enableDefaultPlugins, + setCopyrightWidget, function (next) { require('./upgrade').upgrade(next); } diff --git a/src/privileges/helpers.js b/src/privileges/helpers.js index ca119eec27..fe72b5136f 100644 --- a/src/privileges/helpers.js +++ b/src/privileges/helpers.js @@ -32,12 +32,6 @@ helpers.isUserAllowedTo = function(privilege, uid, cids, callback) { } async.parallel({ - userPrivilegeExists: function(next) { - groups.exists(userKeys, next); - }, - groupPrivilegeExists: function(next) { - groups.exists(groupKeys, next); - }, hasUserPrivilege: function(next) { groups.isMemberOfGroups(uid, userKeys, next); }, @@ -51,7 +45,7 @@ helpers.isUserAllowedTo = function(privilege, uid, cids, callback) { var result = []; for (var i=0; i