Reduce duplication in src/categoryTools.js

v1.18.x
Micheil Smith 11 years ago
parent 2c2e5de911
commit 5f6d5cd9a5

@ -4,9 +4,31 @@ var Groups = require('./groups'),
User = require('./user'), User = require('./user'),
async = require('async'), async = require('async'),
db = require('./database'), db = require('./database');
CategoryTools = {}; var internals = {
isMember: function(key, candidate, next){
Groups.exists(key, function(err, exists) {
if (exists) {
Groups.isMember(candidate, key, next);
} else {
next(null, null);
}
});
},
isMemberOfGroupList: function(key, candidate, next){
Groups.exists(key, function(err, exists) {
if (exists) {
Groups.isMemberOfGroupList(candidate, key, next);
} else {
next(null, null);
}
});
}
};
var CategoryTools = {};
CategoryTools.exists = function(cid, callback) { CategoryTools.exists = function(cid, callback) {
db.isSortedSetMember('categories:cid', cid, callback); db.isSortedSetMember('categories:cid', cid, callback);
@ -15,44 +37,16 @@ CategoryTools.exists = function(cid, callback) {
CategoryTools.privileges = function(cid, uid, callback) { CategoryTools.privileges = function(cid, uid, callback) {
async.parallel({ async.parallel({
"+r": function(next) { "+r": function(next) {
var key = 'cid:' + cid + ':privileges:+r'; internals.isMember('cid:' + cid + ':privileges:+r', uid, next);
Groups.exists(key, function(err, exists) {
if (exists) {
Groups.isMember(uid, key, next);
} else {
next(null, null);
}
});
}, },
"+w": function(next) { "+w": function(next) {
var key = 'cid:' + cid + ':privileges:+w'; internals.isMember('cid:' + cid + ':privileges:+w', uid, next);
Groups.exists(key, function(err, exists) {
if (exists) {
Groups.isMember(uid, key, next);
} else {
next(null, null);
}
});
}, },
"g+r": function(next) { "g+r": function(next) {
var key = 'cid:' + cid + ':privileges:g+r'; internals.isMemberOfGroupList('cid:' + cid + ':privileges:g+r', uid, next);
Groups.exists(key, function(err, exists) {
if (exists) {
Groups.isMemberOfGroupList(uid, key, next);
} else {
next(null, null);
}
});
}, },
"g+w": function(next) { "g+w": function(next) {
var key = 'cid:' + cid + ':privileges:g+w'; internals.isMemberOfGroupList('cid:' + cid + ':privileges:g+w', uid, next);
Groups.exists(key, function(err, exists) {
if (exists) {
Groups.isMemberOfGroupList(uid, key, next);
} else {
next(null, null);
}
});
}, },
moderator: function(next) { moderator: function(next) {
User.isModerator(uid, cid, next); User.isModerator(uid, cid, next);
@ -93,23 +87,13 @@ CategoryTools.privileges = function(cid, uid, callback) {
CategoryTools.groupPrivileges = function(cid, groupName, callback) { CategoryTools.groupPrivileges = function(cid, groupName, callback) {
async.parallel({ async.parallel({
"g+r": function(next) { "g+r": function(next) {
var key = 'cid:' + cid + ':privileges:g+r'; internals.isMember('cid:' + cid + ':privileges:g+r', groupName, function(err, isMember){
Groups.exists(key, function(err, exists) { next(err, !!isMember);
if (exists) {
Groups.isMember(groupName, key, next);
} else {
next(null, false);
}
}); });
}, },
"g+w": function(next) { "g+w": function(next) {
var key = 'cid:' + cid + ':privileges:g+w'; internals.isMember('cid:' + cid + ':privileges:g+w', groupName, function(err, isMember){
Groups.exists(key, function(err, exists) { next(err, !!isMember);
if (exists) {
Groups.isMember(groupName, key, next);
} else {
next(null, false);
}
}); });
} }
}, function(err, privileges) { }, function(err, privileges) {

Loading…
Cancel
Save