admins can bypass the request step of a group and just join it, and they also become owners when they join a group

v1.18.x
Julian Lam 10 years ago
parent a526577927
commit 0c2d2a28ba

@ -631,10 +631,23 @@ var async = require('async'),
Groups.exists(groupName, function(err, exists) { Groups.exists(groupName, function(err, exists) {
if (exists) { if (exists) {
db.sortedSetAdd('group:' + groupName + ':members', Date.now(), uid, callback); var tasks = [
plugins.fireHook('action:group.join', { async.apply(db.sortedSetAdd, 'group:' + groupName + ':members', Date.now(), uid)
groupName: groupName, ];
uid: uid
user.isAdministrator(uid, function(err, isAdmin) {
if (isAdmin) {
tasks.push(async.apply(db.setAdd, 'group:' + groupName + ':owners', uid));
}
async.parallel(tasks, function(err) {
plugins.fireHook('action:group.join', {
groupName: groupName,
uid: uid
});
callback();
});
}); });
} else { } else {
Groups.create({ Groups.create({

@ -2,6 +2,9 @@
var groups = require('../groups'), var groups = require('../groups'),
meta = require('../meta'), meta = require('../meta'),
user = require('../user'),
async = require('async'),
SocketGroups = {}; SocketGroups = {};
@ -11,8 +14,11 @@ SocketGroups.join = function(socket, data, callback) {
} }
if (meta.config.allowPrivateGroups !== '0') { if (meta.config.allowPrivateGroups !== '0') {
groups.isPrivate(data.groupName, function(err, isPrivate) { async.parallel({
if (isPrivate) { isAdmin: async.apply(user.isAdministrator, socket.uid),
isPrivate: async.apply(groups.isPrivate, data.groupName)
}, function(err, checks) {
if (checks.isPrivate && !checks.isAdmin) {
groups.requestMembership(data.groupName, socket.uid, callback); groups.requestMembership(data.groupName, socket.uid, callback);
} else { } else {
groups.join(data.groupName, socket.uid, callback); groups.join(data.groupName, socket.uid, callback);

Loading…
Cancel
Save