Add groups.getRoles

This commit is contained in:
Girish Ramakrishnan
2018-06-16 00:29:56 -07:00
parent e8d9597345
commit ca9cd2cf0f
3 changed files with 46 additions and 3 deletions

View File

@@ -19,13 +19,16 @@ exports = module.exports = {
getGroups: getGroups,
setGroups: setGroups,
getRoles: getRoles,
_clear: clear
};
var assert = require('assert'),
database = require('./database.js'),
DatabaseError = require('./databaseerror'),
safe = require('safetydance');
safe = require('safetydance'),
_ = require('underscore');
var GROUPS_FIELDS = [ 'id', 'name', 'rolesJson' ].join(',');
@@ -280,3 +283,20 @@ function isMember(groupId, userId, callback) {
callback(null, result.length !== 0);
});
}
function getRoles(userId, callback) {
assert.strictEqual(typeof userId, 'string');
assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + GROUPS_FIELDS + ' ' +
' FROM groups INNER JOIN groupMembers ON groups.id = groupMembers.groupId AND groupMembers.userId = ?', [ userId ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error));
if (results.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND));
results.forEach(postProcess);
var merged = [].concat.apply([], results.map(function (r) { return r.roles; }));
callback(null, _.uniq(merged));
});
}