diff --git a/src/ldap.js b/src/ldap.js index 210c6dce4..2ee930812 100644 --- a/src/ldap.js +++ b/src/ldap.js @@ -47,7 +47,7 @@ function getUsersWithAccessToApp(req, callback) { assert.strictEqual(typeof req.app, 'object'); assert.strictEqual(typeof callback, 'function'); - users.list(function (error, result) { + users.getAll(function (error, result) { if (error) return callback(new ldap.OperationsError(error.toString())); async.filter(result, apps.hasAccessTo.bind(null, req.app), function (error, allowedUsers) { diff --git a/src/routes/users.js b/src/routes/users.js index 1f375a3f9..83acf455b 100644 --- a/src/routes/users.js +++ b/src/routes/users.js @@ -85,7 +85,13 @@ function update(req, res, next) { } function list(req, res, next) { - users.list(function (error, results) { + var page = typeof req.query.page !== 'undefined' ? parseInt(req.query.page) : 1; + if (!page || page < 0) return next(new HttpError(400, 'page query param has to be a postive number')); + + var perPage = typeof req.query.per_page !== 'undefined'? parseInt(req.query.per_page) : 25; + if (!perPage || perPage < 0) return next(new HttpError(400, 'per_page query param has to be a postive number')); + + users.getAllPaged(page, perPage, function (error, results) { if (error) return next(new HttpError(500, error)); results = results.map(users.removeRestrictedFields); diff --git a/src/users.js b/src/users.js index 052defbe8..cbdadd29e 100644 --- a/src/users.js +++ b/src/users.js @@ -6,7 +6,8 @@ exports = module.exports = { removePrivateFields: removePrivateFields, removeRestrictedFields: removeRestrictedFields, - list: list, + getAll: getAll, + getAllPaged: getAllPaged, create: create, isActivated: isActivated, verify: verify, @@ -304,7 +305,7 @@ function removeUser(userId, auditSource, callback) { }); } -function list(callback) { +function getAll(callback) { assert.strictEqual(typeof callback, 'function'); userdb.getAllWithGroupIds(function (error, results) { @@ -314,6 +315,18 @@ function list(callback) { }); } +function getAllPaged(page, perPage, callback) { + assert.strictEqual(typeof page, 'number'); + assert.strictEqual(typeof perPage, 'number'); + assert.strictEqual(typeof callback, 'function'); + + userdb.getAllWithGroupIdsPaged(page, perPage, function (error, results) { + if (error) return callback(new UsersError(UsersError.INTERNAL_ERROR, error)); + + return callback(null, results); + }); +} + function count(callback) { assert.strictEqual(typeof callback, 'function');