mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 19:46:01 +01:00
updating all group lib methods, and their callers -- #1252
This commit is contained in:
@@ -21,17 +21,15 @@ var async = require('async'),
|
||||
UserAdmin.makeAdmin = function(uid, theirid, socket) {
|
||||
user.isAdministrator(uid, function(err, isAdmin) {
|
||||
if (isAdmin) {
|
||||
groups.getGidFromName('administrators', function(err, gid) {
|
||||
groups.join(gid, theirid, function(err) {
|
||||
if (!err) {
|
||||
socket.emit('event:alert', {
|
||||
title: 'User Modified',
|
||||
message: 'This user is now an administrator!',
|
||||
type: 'success',
|
||||
timeout: 2000
|
||||
});
|
||||
}
|
||||
});
|
||||
groups.join('administrators', theirid, function(err) {
|
||||
if (!err) {
|
||||
socket.emit('event:alert', {
|
||||
title: 'User Modified',
|
||||
message: 'This user is now an administrator!',
|
||||
type: 'success',
|
||||
timeout: 2000
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
socket.emit('event:alert', {
|
||||
@@ -47,18 +45,16 @@ var async = require('async'),
|
||||
UserAdmin.removeAdmin = function(uid, theirid, socket) {
|
||||
user.isAdministrator(uid, function(err, isAdmin) {
|
||||
if (isAdmin) {
|
||||
groups.getGidFromName('administrators', function(err, gid) {
|
||||
groups.leave(gid, theirid, function(err) {
|
||||
if (!err) {
|
||||
groups.leave('administrators', theirid, function(err) {
|
||||
if (!err) {
|
||||
|
||||
socket.emit('event:alert', {
|
||||
title: 'User Modified',
|
||||
message: 'This user is no longer an administrator!',
|
||||
type: 'success',
|
||||
timeout: 2000
|
||||
});
|
||||
}
|
||||
});
|
||||
socket.emit('event:alert', {
|
||||
title: 'User Modified',
|
||||
message: 'This user is no longer an administrator!',
|
||||
type: 'success',
|
||||
timeout: 2000
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -182,7 +182,7 @@ var db = require('./database'),
|
||||
};
|
||||
|
||||
Categories.getModerators = function(cid, callback) {
|
||||
Groups.getByGroupName('cid:' + cid + ':privileges:mods', {}, function(err, groupObj) {
|
||||
Groups.get('cid:' + cid + ':privileges:mods', {}, function(err, groupObj) {
|
||||
if (!err) {
|
||||
if (groupObj.members && groupObj.members.length) {
|
||||
user.getMultipleUserFields(groupObj.members, ['uid', 'username', 'userslug', 'picture'], function(err, moderators) {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
var Groups = require('./groups'),
|
||||
User = require('./user'),
|
||||
|
||||
@@ -16,19 +18,9 @@ CategoryTools.privileges = function(cid, uid, callback) {
|
||||
var key = 'cid:' + cid + ':privileges:+r';
|
||||
Groups.exists(key, function(err, exists) {
|
||||
if (exists) {
|
||||
async.parallel({
|
||||
isMember: function(next) {
|
||||
Groups.isMemberByGroupName(uid, key, next);
|
||||
},
|
||||
isEmpty: function(next) {
|
||||
Groups.isEmptyByGroupName(key, next);
|
||||
}
|
||||
}, next);
|
||||
Groups.isMember(uid, key, next);
|
||||
} else {
|
||||
next(null, {
|
||||
isMember: false,
|
||||
isEmpty: true
|
||||
});
|
||||
next(null, true);
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -36,19 +28,9 @@ CategoryTools.privileges = function(cid, uid, callback) {
|
||||
var key = 'cid:' + cid + ':privileges:+w';
|
||||
Groups.exists(key, function(err, exists) {
|
||||
if (exists) {
|
||||
async.parallel({
|
||||
isMember: function(next) {
|
||||
Groups.isMemberByGroupName(uid, key, next);
|
||||
},
|
||||
isEmpty: function(next) {
|
||||
Groups.isEmptyByGroupName(key, next);
|
||||
}
|
||||
}, next);
|
||||
Groups.isMember(uid, key, next);
|
||||
} else {
|
||||
next(null, {
|
||||
isMember: false,
|
||||
isEmpty: true
|
||||
});
|
||||
next(null, true);
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -56,19 +38,9 @@ CategoryTools.privileges = function(cid, uid, callback) {
|
||||
var key = 'cid:' + cid + ':privileges:g+r';
|
||||
Groups.exists(key, function(err, exists) {
|
||||
if (exists) {
|
||||
async.parallel({
|
||||
isMember: function(next) {
|
||||
Groups.isMemberOfGroupAny(uid, key, next);
|
||||
},
|
||||
isEmpty: function(next) {
|
||||
Groups.isEmptyByGroupName(key, next);
|
||||
}
|
||||
}, next);
|
||||
Groups.isMemberOfGroupList(uid, key, next);
|
||||
} else {
|
||||
next(null, {
|
||||
isMember: false,
|
||||
isEmpty: true
|
||||
});
|
||||
next(null, true);
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -76,19 +48,9 @@ CategoryTools.privileges = function(cid, uid, callback) {
|
||||
var key = 'cid:' + cid + ':privileges:g+w';
|
||||
Groups.exists(key, function(err, exists) {
|
||||
if (exists) {
|
||||
async.parallel({
|
||||
isMember: function(next) {
|
||||
Groups.isMemberOfGroupAny(uid, key, next);
|
||||
},
|
||||
isEmpty: function(next) {
|
||||
Groups.isEmptyByGroupName(key, next);
|
||||
}
|
||||
}, next);
|
||||
Groups.isMemberOfGroupList(uid, key, next);
|
||||
} else {
|
||||
next(null, {
|
||||
isMember: false,
|
||||
isEmpty: true
|
||||
});
|
||||
next(null, true);
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -100,25 +62,17 @@ CategoryTools.privileges = function(cid, uid, callback) {
|
||||
}
|
||||
}, function(err, privileges) {
|
||||
callback(err, !privileges ? null : {
|
||||
"+r": privileges['+r'].isMember,
|
||||
"+w": privileges['+w'].isMember,
|
||||
"g+r": privileges['g+r'].isMember,
|
||||
"g+w": privileges['g+w'].isMember,
|
||||
"+r": privileges['+r'],
|
||||
"+w": privileges['+w'],
|
||||
"g+r": privileges['g+r'],
|
||||
"g+w": privileges['g+w'],
|
||||
read: (
|
||||
(
|
||||
(privileges['+r'].isMember || privileges['+r'].isEmpty) &&
|
||||
(privileges['g+r'].isMember || privileges['g+r'].isEmpty)
|
||||
) ||
|
||||
privileges.moderator ||
|
||||
privileges.admin
|
||||
privileges['+r'] || privileges['g+r'] ||
|
||||
privileges.moderator || privileges.admin
|
||||
),
|
||||
write: (
|
||||
(
|
||||
(privileges['+w'].isMember || privileges['+w'].isEmpty) &&
|
||||
(privileges['g+w'].isMember || privileges['g+w'].isEmpty)
|
||||
) ||
|
||||
privileges.moderator ||
|
||||
privileges.admin
|
||||
privileges['+w'] || privileges['g+w'] ||
|
||||
privileges.moderator || privileges.admin
|
||||
),
|
||||
editable: privileges.moderator || privileges.admin,
|
||||
view_deleted: privileges.moderator || privileges.admin,
|
||||
@@ -134,16 +88,9 @@ CategoryTools.groupPrivileges = function(cid, gid, callback) {
|
||||
var key = 'cid:' + cid + ':privileges:g+r';
|
||||
Groups.exists(key, function(err, exists) {
|
||||
if (exists) {
|
||||
async.parallel({
|
||||
isMember: function(next) {
|
||||
Groups.isMemberByGroupName(gid, key, next);
|
||||
}
|
||||
}, next);
|
||||
Groups.isMember(gid, key, next);
|
||||
} else {
|
||||
next(null, {
|
||||
isMember: false,
|
||||
isEmpty: true
|
||||
});
|
||||
next(null, false);
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -151,23 +98,16 @@ CategoryTools.groupPrivileges = function(cid, gid, callback) {
|
||||
var key = 'cid:' + cid + ':privileges:g+w';
|
||||
Groups.exists(key, function(err, exists) {
|
||||
if (exists) {
|
||||
async.parallel({
|
||||
isMember: function(next) {
|
||||
Groups.isMemberByGroupName(gid, key, next);
|
||||
}
|
||||
}, next);
|
||||
Groups.isMember(gid, key, next);
|
||||
} else {
|
||||
next(null, {
|
||||
isMember: false,
|
||||
isEmpty: true
|
||||
});
|
||||
next(null, false);
|
||||
}
|
||||
});
|
||||
}
|
||||
}, function(err, privileges) {
|
||||
callback(err, !privileges ? null : {
|
||||
"g+r": privileges['g+r'].isMember,
|
||||
"g+w": privileges['g+w'].isMember
|
||||
"g+r": privileges['g+r'],
|
||||
"g+w": privileges['g+w']
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
165
src/groups.js
165
src/groups.js
@@ -3,10 +3,7 @@
|
||||
(function(Groups) {
|
||||
|
||||
/* REMOVED
|
||||
Groups.getGidFromName
|
||||
Groups.joinByGroupName
|
||||
Groups.leaveByGroupName
|
||||
Groups.prune
|
||||
group lists need to be updated to contain... groups!
|
||||
*/
|
||||
|
||||
var async = require('async'),
|
||||
@@ -87,118 +84,30 @@
|
||||
});
|
||||
};
|
||||
|
||||
// Not checked
|
||||
Groups.getByGroupName = function(groupName, options, callback) {
|
||||
Groups.getGidFromName(groupName, function(err, gid) {
|
||||
if (err || !gid) {
|
||||
callback(new Error('gid-not-found'));
|
||||
} else {
|
||||
Groups.get(gid, options, callback);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// Not checked
|
||||
Groups.getMemberships = function(uid, callback) {
|
||||
if (!uid) {
|
||||
return callback(new Error('no-uid-specified'));
|
||||
}
|
||||
|
||||
db.getObjectValues('group:gid', function(err, gids) {
|
||||
async.filter(gids, function(gid, next) {
|
||||
Groups.isMember(uid, gid, function(err, isMember) {
|
||||
next(isMember);
|
||||
});
|
||||
}, function(gids) {
|
||||
async.map(gids, function(gid, next) {
|
||||
Groups.get(gid, {}, next);
|
||||
}, callback);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// Not checked
|
||||
Groups.isDeleted = function(gid, callback) {
|
||||
db.getObjectField('gid:' + gid, 'deleted', function(err, deleted) {
|
||||
callback(err, parseInt(deleted, 10) === 1);
|
||||
});
|
||||
};
|
||||
|
||||
Groups.isMember = function(uid, groupName, callback) {
|
||||
db.isSetMember('group:' + groupName + ':members', uid, callback);
|
||||
};
|
||||
|
||||
// Not checked
|
||||
Groups.isMemberByGroupName = function(uid, groupName, callback) {
|
||||
Groups.getGidFromName(groupName, function(err, gid) {
|
||||
if (err || !gid) {
|
||||
callback(null, false);
|
||||
} else {
|
||||
Groups.isMemberOfGroupList = function(uid, groupListKey, callback) {
|
||||
db.getSetMembers('group:' + groupListKey + ':members', function(err, gids) {
|
||||
async.some(gids, function(gid, next) {
|
||||
Groups.isMember(uid, gid, function(err, isMember) {
|
||||
callback(err, !!isMember);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// Not checked
|
||||
Groups.isMemberOfGroupAny = function(uid, groupListKey, callback) {
|
||||
Groups.getGidFromName(groupListKey, function(err, gid) {
|
||||
if (err || !gid) {
|
||||
return callback(new Error('error-checking-group'));
|
||||
}
|
||||
|
||||
db.getSetMembers('gid:' + gid + ':members', function(err, gids) {
|
||||
async.some(gids, function(gid, next) {
|
||||
Groups.isMember(uid, gid, function(err, isMember) {
|
||||
if (!err && isMember) {
|
||||
next(true);
|
||||
} else {
|
||||
next(false);
|
||||
}
|
||||
});
|
||||
}, function(result) {
|
||||
callback(null, result);
|
||||
if (!err && isMember) {
|
||||
next(true);
|
||||
} else {
|
||||
next(false);
|
||||
}
|
||||
});
|
||||
}, function(result) {
|
||||
callback(null, result);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// Not checked
|
||||
Groups.isEmpty = function(gid, callback) {
|
||||
db.setCount('gid:' + gid + ':members', function(err, numMembers) {
|
||||
callback(err, numMembers === 0);
|
||||
});
|
||||
};
|
||||
|
||||
// Not checked
|
||||
Groups.isEmptyByGroupName = function(groupName, callback) {
|
||||
Groups.getGidFromName(groupName, function(err, gid) {
|
||||
if (err || !gid) {
|
||||
callback(new Error('gid-not-found'));
|
||||
} else {
|
||||
Groups.isEmpty(gid, callback);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// Not checked
|
||||
Groups.exists = function(name, callback) {
|
||||
async.parallel({
|
||||
exists: function(next) {
|
||||
db.isObjectField('group:gid', name, next);
|
||||
},
|
||||
deleted: function(next) {
|
||||
Groups.getGidFromName(name, function(err, gid) {
|
||||
Groups.isDeleted(gid, next);
|
||||
});
|
||||
}
|
||||
}, function(err, results) {
|
||||
callback(err, !results ? null : (results.exists && !results.deleted));
|
||||
});
|
||||
db.isSetMember('groups', name, callback);
|
||||
};
|
||||
|
||||
// Not checked
|
||||
Groups.create = function(name, description, callback) {
|
||||
if (name.length === 0) {
|
||||
return callback(new Error('name-too-short'));
|
||||
@@ -210,24 +119,16 @@
|
||||
|
||||
Groups.exists(name, function (err, exists) {
|
||||
if (!exists) {
|
||||
db.incrObjectField('global', 'nextGid', function (err, gid) {
|
||||
db.setObjectField('group:gid', name, gid, function(err) {
|
||||
var groupData = {
|
||||
name: name,
|
||||
description: description,
|
||||
deleted: '0',
|
||||
hidden: '0',
|
||||
system: system ? '1' : '0'
|
||||
};
|
||||
|
||||
var groupData = {
|
||||
gid: gid,
|
||||
name: name,
|
||||
description: description,
|
||||
deleted: '0',
|
||||
hidden: '0',
|
||||
system: system ? '1' : '0'
|
||||
};
|
||||
|
||||
db.setObject('gid:' + gid, groupData, function(err) {
|
||||
|
||||
Groups.get(gid, {}, callback);
|
||||
|
||||
});
|
||||
});
|
||||
db.setObject('group:' + name, groupData, function(err) {
|
||||
Groups.get(name, {}, callback);
|
||||
});
|
||||
} else {
|
||||
callback(new Error('group-exists'));
|
||||
@@ -235,36 +136,34 @@
|
||||
});
|
||||
};
|
||||
|
||||
// Not checked
|
||||
Groups.hide = function(gid, callback) {
|
||||
Groups.update(gid, {
|
||||
Groups.hide = function(groupName, callback) {
|
||||
Groups.update(groupName, {
|
||||
hidden: '1'
|
||||
}, callback);
|
||||
};
|
||||
|
||||
// Not checked
|
||||
Groups.update = function(gid, values, callback) {
|
||||
db.exists('gid:' + gid, function (err, exists) {
|
||||
Groups.update = function(groupName, values, callback) {
|
||||
db.exists('group:' + groupName, function (err, exists) {
|
||||
if (!err && exists) {
|
||||
// If the group was renamed, check for dupes, fix the assoc. hash
|
||||
// If the group was renamed, check for dupes
|
||||
if (values.name) {
|
||||
Groups.exists(values.name, function(err, exists) {
|
||||
if (!exists) {
|
||||
Groups.get(gid, {}, function(err, groupObj) {
|
||||
db.rename('group:' + groupName, 'group:' + values.name, function(err) {
|
||||
if (err) {
|
||||
return callback(new Error('group-not-found'));
|
||||
return callback(new Error('could-not-rename-group'));
|
||||
}
|
||||
|
||||
db.deleteObjectField('group:gid', groupObj.name);
|
||||
db.setObjectField('group:gid', values.name, gid);
|
||||
db.setObject('gid:' + gid, values, callback);
|
||||
db.setRemove('groups', groupName);
|
||||
db.setAdd('groups', values.name);
|
||||
db.setObject('group:' + values.name, values, callback);
|
||||
});
|
||||
} else {
|
||||
callback(new Error('group-exists'));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
db.setObject('gid:' + gid, values, callback);
|
||||
db.setObject('group:' + groupName, values, callback);
|
||||
}
|
||||
} else {
|
||||
if (callback) {
|
||||
|
||||
@@ -290,24 +290,14 @@ var async = require('async'),
|
||||
function (next) {
|
||||
// Check if an administrator needs to be created
|
||||
var Groups = require('./groups');
|
||||
|
||||
Groups.getGidFromName('administrators', function (err, gid) {
|
||||
if (err) {
|
||||
return next(err.message);
|
||||
}
|
||||
|
||||
if (gid) {
|
||||
Groups.get(gid, {}, function (err, groupObj) {
|
||||
if (groupObj.count > 0) {
|
||||
winston.info('Administrator found, skipping Admin setup');
|
||||
next();
|
||||
} else {
|
||||
install.createAdmin(next);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
install.createAdmin(next);
|
||||
}
|
||||
Groups.get('administrators', {}, function (err, groupObj) {
|
||||
if (groupObj.memberCount > 0) {
|
||||
winston.info('Administrator found, skipping Admin setup');
|
||||
next();
|
||||
} else {
|
||||
install.createAdmin(next);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
function (next) {
|
||||
@@ -417,7 +407,7 @@ var async = require('async'),
|
||||
return callback(new Error('invalid-values'));
|
||||
}
|
||||
|
||||
Groups.joinByGroupName('administrators', uid, callback);
|
||||
Groups.join('administrators', uid, callback);
|
||||
});
|
||||
},
|
||||
retryPassword = function (originalResults) {
|
||||
|
||||
@@ -198,16 +198,16 @@ SocketAdmin.categories.setPrivilege = function(socket, data, callback) {
|
||||
};
|
||||
|
||||
if (set) {
|
||||
groups.joinByGroupName('cid:' + cid + ':privileges:' + privilege, uid, cb);
|
||||
groups.join('cid:' + cid + ':privileges:' + privilege, uid, cb);
|
||||
} else {
|
||||
groups.leaveByGroupName('cid:' + cid + ':privileges:' + privilege, uid, cb);
|
||||
groups.leave('cid:' + cid + ':privileges:' + privilege, uid, cb);
|
||||
}
|
||||
};
|
||||
|
||||
SocketAdmin.categories.getPrivilegeSettings = function(socket, cid, callback) {
|
||||
async.parallel({
|
||||
"+r": function(next) {
|
||||
groups.getByGroupName('cid:' + cid + ':privileges:+r', { expand: true }, function(err, groupObj) {
|
||||
groups.get('cid:' + cid + ':privileges:+r', { expand: true }, function(err, groupObj) {
|
||||
if (!err) {
|
||||
next.apply(this, arguments);
|
||||
} else {
|
||||
@@ -218,7 +218,7 @@ SocketAdmin.categories.getPrivilegeSettings = function(socket, cid, callback) {
|
||||
});
|
||||
},
|
||||
"+w": function(next) {
|
||||
groups.getByGroupName('cid:' + cid + ':privileges:+w', { expand: true }, function(err, groupObj) {
|
||||
groups.get('cid:' + cid + ':privileges:+w', { expand: true }, function(err, groupObj) {
|
||||
if (!err) {
|
||||
next.apply(this, arguments);
|
||||
} else {
|
||||
@@ -229,7 +229,7 @@ SocketAdmin.categories.getPrivilegeSettings = function(socket, cid, callback) {
|
||||
});
|
||||
},
|
||||
"mods": function(next) {
|
||||
groups.getByGroupName('cid:' + cid + ':privileges:mods', { expand: true }, function(err, groupObj) {
|
||||
groups.get('cid:' + cid + ':privileges:mods', { expand: true }, function(err, groupObj) {
|
||||
if (!err) {
|
||||
next.apply(this, arguments);
|
||||
} else {
|
||||
@@ -259,9 +259,9 @@ SocketAdmin.categories.setGroupPrivilege = function(socket, data, callback) {
|
||||
}
|
||||
|
||||
if (data.set) {
|
||||
groups.joinByGroupName('cid:' + data.cid + ':privileges:' + data.privilege, data.gid, callback);
|
||||
groups.join('cid:' + data.cid + ':privileges:' + data.privilege, data.gid, callback);
|
||||
} else {
|
||||
groups.leaveByGroupName('cid:' + data.cid + ':privileges:' + data.privilege, data.gid, callback);
|
||||
groups.leave('cid:' + data.cid + ':privileges:' + data.privilege, data.gid, callback);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
var Groups = require('../groups'),
|
||||
|
||||
SocketGroups = {};
|
||||
|
||||
SocketGroups.getMemberships = function(socket, data, callback) {
|
||||
if (data && data.uid) {
|
||||
Groups.getMemberships(data.uid, callback);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = SocketGroups;
|
||||
@@ -256,7 +256,7 @@ SocketPosts.flag = function(socket, pid, callback) {
|
||||
},
|
||||
function(topicSlug, next) {
|
||||
path = nconf.get('relative_path') + '/topic/' + topicSlug + '#' + pid;
|
||||
groups.getByGroupName('administrators', {}, next);
|
||||
groups.get('administrators', {}, next);
|
||||
},
|
||||
function(adminGroup, next) {
|
||||
notifications.create({
|
||||
|
||||
@@ -334,28 +334,6 @@ Upgrade.upgrade = function(callback) {
|
||||
next();
|
||||
}
|
||||
},
|
||||
function(next) {
|
||||
thisSchemaDate = Date.UTC(2014, 2, 19);
|
||||
|
||||
if (schemaDate < thisSchemaDate) {
|
||||
async.map(['administrators', 'registered-users'], Groups.getGidFromName, function(err, gids) {
|
||||
async.each(gids, function(gid, next) {
|
||||
db.setObjectField('gid:' + gid, 'system', '1', next);
|
||||
}, function(err) {
|
||||
if (err) {
|
||||
winston.error('[2014/3/19] Problem setting "system" flag for system groups.');
|
||||
next();
|
||||
} else {
|
||||
winston.info('[2014/3/19] Setting "system" flag for system groups');
|
||||
Upgrade.update(thisSchemaDate, next);
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
winston.info('[2014/3/19] Setting "system" flag for system groups - skipped');
|
||||
next();
|
||||
}
|
||||
},
|
||||
function(next) {
|
||||
thisSchemaDate = Date.UTC(2014, 2, 19, 20);
|
||||
|
||||
@@ -400,11 +378,22 @@ Upgrade.upgrade = function(callback) {
|
||||
}
|
||||
], next);
|
||||
}, function(err) {
|
||||
// Delete the old mapping key
|
||||
// Clean-up
|
||||
async.series([
|
||||
function(next) {
|
||||
// Mapping
|
||||
db.delete('group:gid', next);
|
||||
},
|
||||
function(next) {
|
||||
// Incrementor
|
||||
db.deleteObjectField('global', 'nextGid', next);
|
||||
},
|
||||
function(next) {
|
||||
// Set 'administrators' and 'registered-users' as system groups
|
||||
db.setObjectField('group:administrators', 'system', '1');
|
||||
db.setObjectField('group:registered-users', 'system', '1');
|
||||
next();
|
||||
},
|
||||
function(next) {
|
||||
// Delete empty groups
|
||||
Groups.list({ showAllGroups: true }, function(err, groups) {
|
||||
|
||||
@@ -295,11 +295,11 @@ var bcrypt = require('bcryptjs'),
|
||||
};
|
||||
|
||||
User.isModerator = function(uid, cid, callback) {
|
||||
groups.isMemberByGroupName(uid, 'cid:' + cid + ':privileges:mods', callback);
|
||||
groups.isMember(uid, 'cid:' + cid + ':privileges:mods', callback);
|
||||
};
|
||||
|
||||
User.isAdministrator = function(uid, callback) {
|
||||
groups.isMemberByGroupName(uid, 'administrators', callback);
|
||||
groups.isMember(uid, 'administrators', callback);
|
||||
};
|
||||
|
||||
User.isOnline = function(uid, callback) {
|
||||
|
||||
@@ -117,7 +117,7 @@ module.exports = function(User) {
|
||||
db.sortedSetAdd('users:postcount', 0, uid);
|
||||
db.sortedSetAdd('users:reputation', 0, uid);
|
||||
|
||||
groups.joinByGroupName('registered-users', uid);
|
||||
groups.join('registered-users', uid);
|
||||
|
||||
if (password) {
|
||||
User.hashPassword(password, function(err, hash) {
|
||||
|
||||
Reference in New Issue
Block a user