diff --git a/src/test/ldap-test.js b/src/test/ldap-test.js index b99f40533..cf4b2a43f 100644 --- a/src/test/ldap-test.js +++ b/src/test/ldap-test.js @@ -34,8 +34,8 @@ function setup(done) { database.initialize.bind(null), database._clear.bind(null), ldapServer.start.bind(null), - user.create.bind(null, USER_0.username, USER_0.password, USER_0.email, USER_0.displayName, null, false), - user.create.bind(null, USER_1.username, USER_1.password, USER_1.email, USER_0.displayName, USER_0, false) + user.create.bind(null, USER_0.username, USER_0.password, USER_0.email, USER_0.displayName), + user.create.bind(null, USER_1.username, USER_1.password, USER_1.email, USER_0.displayName, { invitor: USER_0 }) ], done); } diff --git a/src/user.js b/src/user.js index d662acd1a..8cac014bf 100644 --- a/src/user.js +++ b/src/user.js @@ -79,7 +79,7 @@ function listUsers(callback) { userdb.getAll(function (error, result) { if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error)); - return callback(null, result.map(function (obj) { return _.pick(obj, 'id', 'username', 'email', 'displayName'); })); + return callback(null, result.map(function (obj) { return _.pick(obj, 'id', 'username', 'email', 'displayName', 'groupIds'); })); }); } diff --git a/src/userdb.js b/src/userdb.js index 9ac0d5c00..d36166b92 100644 --- a/src/userdb.js +++ b/src/userdb.js @@ -87,9 +87,15 @@ function getByResetToken(resetToken, callback) { function getAll(callback) { assert.strictEqual(typeof callback, 'function'); - database.query('SELECT ' + USERS_FIELDS + ' FROM users', function (error, results) { + database.query('SELECT ' + USERS_FIELDS + ',GROUP_CONCAT(groupMembers.groupId) AS groupIds ' + + ' FROM users LEFT OUTER JOIN groupMembers ON users.id = groupMembers.userId ' + + ' GROUP BY users.id', function (error, results) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); + results.forEach(function (result) { + result.groupIds = result.groupIds ? result.groupIds.split(',') : [ ]; + }); + callback(null, results); }); }