Created
June 7, 2022 13:52
-
-
Save joepuzzo/5338d2f397de789acc782c3159511ead to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const ldap = require('ldapjs'); | |
const LDAP_HOST = "ldap://ldap.foobar.com"; | |
const LDAP_PASSWORD = "**********"; | |
const LDAP_USER = "**********"; | |
const createClient = async () => { | |
const client = ldap.createClient({ | |
url: LDAP_HOST, | |
}); | |
client.on('error', (err) => { | |
if (err) { | |
throw err; | |
} | |
}); | |
return new Promise((resolve, reject)=>{ | |
client.bind( | |
`CN=${LDAP_USER},OU=SA,OU=Company Users,DC=company,DC=com`, | |
LDAP_PASSWORD, | |
(err) => { | |
if (err) { | |
return reject(err); | |
} else { | |
resolve(client); | |
} | |
}, | |
); | |
}) | |
} | |
const get = (client, email) => { | |
return new Promise((resolve, reject) => { | |
// const employeeNumber = ''; | |
const groupName = 'MY_GROUP'; | |
const realName = "Joseph Puzzo"; | |
const options = { | |
// filter: `(&(employeeNumber=${employeeNumber}))`, | |
// filter: `(&(mail=${email}))`, | |
// filter: `(=${groupName})`, | |
// filter: `(&(memberOf=cn=${groupName}))`, | |
// filter: `(&(objectCategory=group)(cn=${groupName}))`, | |
// filter: `(displayName=${groupName})`, | |
filter: `(name=${realName})`, | |
// filter: `(&(memberOf=CN=${groupName}))`, | |
// filter: `(&(objectCategory=person)(objectClass=user)(memberOf=CN=${groupName}))`, | |
scope: 'sub', | |
// attributes: ['memberOf', 'mailNickname'], | |
attributes: ['member', 'mail', 'name'], | |
}; | |
client.search( | |
'OU=Employees,OU=Comapny Users,DC=company,DC=com', | |
options, | |
(err, resp) => { | |
resp.on('searchRequest', (searchRequest) => { | |
console.log('searchRequest: ', searchRequest.messageID); | |
}); | |
resp.on('searchEntry', (entry) => { | |
return resolve(entry.object); | |
}); | |
resp.on('searchReference', (referral) => { | |
console.log('referral: ' + referral.uris.join()); | |
}); | |
resp.on('error', (err) => { | |
console.log('Error:', err); | |
if (err) { | |
return reject(err); | |
} | |
}); | |
resp.on('end', (result) => { | |
console.log('status: ' + result.status); | |
resolve(result.status) | |
}); | |
}, | |
); | |
}); | |
} | |
const go = async () => { | |
console.log('STARTING...'); | |
try { | |
const client = await createClient(); | |
const joe = await get(client, '[email protected]'); | |
const foo = await get(client, '[email protected]'); | |
const bar = await get(client, '[email protected]'); | |
console.log('\n--------------------'); | |
console.log('RES', joe); | |
console.log('\n--------------------'); | |
console.log('RES', foo); | |
console.log('\n--------------------'); | |
console.log('RES', bar); | |
client.unbind((err) => { | |
if(err){ | |
console.log('Error while unbinding', err); | |
} | |
}); | |
} catch(e){ | |
console.log('Unable to create client', e); | |
} | |
} | |
go(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment