mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 03:26:04 +01:00
closes #5159
This commit is contained in:
@@ -115,19 +115,33 @@ groupsController.details = function (req, res, callback) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
groupsController.members = function (req, res, next) {
|
groupsController.members = function (req, res, callback) {
|
||||||
var groupName;
|
var groupName;
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function (next) {
|
function (next) {
|
||||||
groups.getGroupNameByGroupSlug(req.params.slug, next);
|
groups.getGroupNameByGroupSlug(req.params.slug, next);
|
||||||
},
|
},
|
||||||
function (_groupName, next) {
|
function (_groupName, next) {
|
||||||
|
if (!_groupName) {
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
groupName = _groupName;
|
groupName = _groupName;
|
||||||
|
async.parallel({
|
||||||
|
isAdminOrGlobalMod: async.apply(user.isAdminOrGlobalMod, req.uid),
|
||||||
|
isMember: async.apply(groups.isMember, req.uid, groupName),
|
||||||
|
isHidden: async.apply(groups.isHidden, groupName)
|
||||||
|
}, next);
|
||||||
|
},
|
||||||
|
function (results, next) {
|
||||||
|
if (results.isHidden && !results.isMember && !results.isAdminOrGlobalMod) {
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
|
||||||
user.getUsersFromSet('group:' + groupName + ':members', req.uid, 0, 49, next);
|
user.getUsersFromSet('group:' + groupName + ':members', req.uid, 0, 49, next);
|
||||||
},
|
},
|
||||||
], function (err, users) {
|
], function (err, users) {
|
||||||
if (err || !groupName) {
|
if (err) {
|
||||||
return next(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
var breadcrumbs = helpers.buildBreadcrumbs([
|
var breadcrumbs = helpers.buildBreadcrumbs([
|
||||||
|
|||||||
@@ -296,7 +296,7 @@ var utils = require('../public/src/utils');
|
|||||||
};
|
};
|
||||||
|
|
||||||
Groups.isHidden = function (groupName, callback) {
|
Groups.isHidden = function (groupName, callback) {
|
||||||
db.getObjectField(groupName, 'hidden', function (err, isHidden) {
|
db.getObjectField('group:' + groupName, 'hidden', function (err, isHidden) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ describe('Controllers', function () {
|
|||||||
|
|
||||||
var tid;
|
var tid;
|
||||||
var cid;
|
var cid;
|
||||||
|
var fooUid;
|
||||||
|
|
||||||
before(function (done) {
|
before(function (done) {
|
||||||
async.series({
|
async.series({
|
||||||
@@ -33,6 +34,7 @@ describe('Controllers', function () {
|
|||||||
return done(err);
|
return done(err);
|
||||||
}
|
}
|
||||||
cid = results.category.cid;
|
cid = results.category.cid;
|
||||||
|
fooUid = results.user;
|
||||||
|
|
||||||
topics.post({uid: results.user, title: 'test topic title', content: 'test topic content', cid: results.category.cid}, function (err, result) {
|
topics.post({uid: results.user, title: 'test topic title', content: 'test topic content', cid: results.category.cid}, function (err, result) {
|
||||||
tid = result.topicData.tid;
|
tid = result.topicData.tid;
|
||||||
@@ -382,6 +384,84 @@ describe('Controllers', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should load users page', function (done) {
|
||||||
|
request(nconf.get('url') + '/users', function (err, res, body) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert.equal(res.statusCode, 200);
|
||||||
|
assert(body);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should load users page', function (done) {
|
||||||
|
request(nconf.get('url') + '/users?section=online', function (err, res, body) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert.equal(res.statusCode, 200);
|
||||||
|
assert(body);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should load users search page', function (done) {
|
||||||
|
request(nconf.get('url') + '/users?term=bar§ion=sort-posts', function (err, res, body) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert.equal(res.statusCode, 200);
|
||||||
|
assert(body);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should load groups page', function (done) {
|
||||||
|
request(nconf.get('url') + '/groups', function (err, res, body) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert.equal(res.statusCode, 200);
|
||||||
|
assert(body);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should load group details page', function (done) {
|
||||||
|
var groups = require('../src/groups');
|
||||||
|
groups.create({
|
||||||
|
name: 'group-details',
|
||||||
|
description: 'Foobar!',
|
||||||
|
hidden: 0
|
||||||
|
}, function (err) {
|
||||||
|
assert.ifError(err);
|
||||||
|
request(nconf.get('url') + '/groups/group-details', function (err, res, body) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert.equal(res.statusCode, 200);
|
||||||
|
assert(body);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should load group members page', function (done) {
|
||||||
|
request(nconf.get('url') + '/groups/group-details/members', function (err, res, body) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert.equal(res.statusCode, 200);
|
||||||
|
assert(body);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should 404 when trying to load group members of hidden group', function (done) {
|
||||||
|
var groups = require('../src/groups');
|
||||||
|
groups.create({
|
||||||
|
name: 'hidden-group',
|
||||||
|
description: 'Foobar!',
|
||||||
|
hidden: 1
|
||||||
|
}, function (err) {
|
||||||
|
assert.ifError(err);
|
||||||
|
request(nconf.get('url') + '/groups/hidden-group/members', function (err, res, body) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert.equal(res.statusCode, 404);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
after(function (done) {
|
after(function (done) {
|
||||||
db.emptydb(done);
|
db.emptydb(done);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user