diff --git a/lib/profileMapper.js b/lib/profileMapper.js index 31ef24a8..b94f61f7 100644 --- a/lib/profileMapper.js +++ b/lib/profileMapper.js @@ -8,7 +8,7 @@ module.exports = function (raw_data) { }, nickname: raw_data['sAMAccountName'] || raw_data['cn'] || raw_data['commonName'], groups: raw_data['groups'], - emails: (raw_data.mail ? [{value: raw_data.mail }] : undefined) + emails: (raw_data.mail ? (Array.isArray(raw_data.mail) ? raw_data.mail : [{value: raw_data.mail}]) : undefined) }; profile['dn'] = raw_data['dn']; diff --git a/lib/users.js b/lib/users.js index 133602a5..75b4b793 100644 --- a/lib/users.js +++ b/lib/users.js @@ -533,17 +533,19 @@ Users.prototype._getAllGroupsADCached = function (profile, callback) { }); } - const fromCache = memberOf.map(dn => this._groupsCache.get(dn)); - - const resolveFromCache = fromCache.every(Boolean); - - if (resolveFromCache) { - var result = fromCache.map((group) => { - return [group].concat(group.memberOf); - }).reduce((prev, curr) => { - return prev.concat(curr); - }, []); - return callback(null, uniq(result)); + if (memberOf) { + const fromCache = memberOf.map(dn => this._groupsCache.get(dn)); + + const resolveFromCache = fromCache.every(Boolean); + + if (resolveFromCache) { + var result = fromCache.map((group) => { + return [group].concat(group.memberOf); + }).reduce((prev, curr) => { + return prev.concat(curr); + }, []); + return callback(null, uniq(result)); + } } return this._getAllGroupsAD(profile.dn, (err, groups) => {