I'm trying to iterate through an array of AD users and return some user information. I've been looking for a few hours now, or more and haven't been quite able to get my head around the async nature of the activedirectory2 npm package.
I'm getting part of the result I need, however when iterating through the list of usernames, I'm only getting the first one printing out to console.
getADUser.js:
var ActiveDirectory = require('activedirectory2');
var config = require('../../conf/conf-ad.json')
var fileTime = require('./w32FiletimeToEpoch')
var moment = require('moment')
// Find user, return all
var ad = new ActiveDirectory(config);
var getADUser = function (sAMAccountName, opts) {
    return new Promise(function (resolve, reject) {
        ad.findUser(opts, sAMAccountName, function (err, user) {
            if (err) {
                console.log('ERROR: ' + JSON.stringify(err));
                // return;
            }
            if (!user) {
                console.log('User: ' + sAMAccountName + ' not found.');
            } else {
                if (user.userAccountControl == 514) {
                    user.userAccountControl = 'Disabled'
                } else {
                    user.userAccountControl = 'Active'
                }
                if (user.pwdLastSet) {
                    user.pwdLastSet = `${moment(fileTime(user.pwdLastSet))} - ${moment(fileTime(user.pwdLastSet)).fromNow()}`
                }
                if (user.lastLogonTimestamp) {
                    user.lastLogonTimestamp = `${moment(fileTime(user.lastLogonTimestamp))} - ${moment(fileTime(user.lastLogonTimestamp)).fromNow()}`
                }
                if (user.lastLogon) {
                    user.lastLogon = `${moment(fileTime(user.lastLogon))} - ${moment(fileTime(user.lastLogon)).fromNow()}`
                }
                // return;
                // return user.promise();
                // console.log(user)
                // test.push(user)
                resolve(JSON.stringify(user));
            }
        });
    })
}
module.exports = getADUser
checkADCompletions.js:
var checks = ['USERONE', 'USERTWO']
let opts = {
    attributes: ['sAMAccountName', 'userAccountControl']
};
let checkADCompletions = function (userList) {
    let data = []
    return new Promise(function (resolve, reject) {
        return new Promise(function (res, rej) {
            for (let i = 0; i < userList.length; i++) {
                getADUser(userList[i], opts)
                    .then(function (s) {
                        data.push(s)
                    }).then(function () {
                        resolve(data)
                    })
            }
        })
    })
}
checkADCompletions(checks).then(function (d) {
    console.log(d) \\ Only prints the first user details
})
 
     
     
    