1 | 'use strict'
|
2 | const ldap = require('ldapjs')
|
3 | const ldapChanges = require('./changes')
|
4 | const utils = require('./utils')
|
5 |
|
6 | module.exports = function ({adminDn, adminPassword, username, upn, userdn, email}) {
|
7 | return new Promise((resolve, reject) => {
|
8 |
|
9 | const client = this.getClient()
|
10 |
|
11 | client.bind(adminDn, adminPassword, async (err) => {
|
12 |
|
13 | if (err) {
|
14 | console.log(err)
|
15 | client.destroy()
|
16 | return reject(err)
|
17 | }
|
18 |
|
19 | const changes = [ldapChanges.enableUser()]
|
20 |
|
21 | let filter
|
22 | if (username) {
|
23 | filter = '(sAMAccountName=' + username + ')'
|
24 | } else if (email) {
|
25 | filter = '(mail=' + email + ')'
|
26 | } else if (upn) {
|
27 | filter = '(userPrincipalName=' + upn + ')'
|
28 | } else if (userDn) {
|
29 | filter = '(distinguishedName=' + userDn + ')'
|
30 | }
|
31 |
|
32 | const opts = {
|
33 | filter,
|
34 | scope: 'sub',
|
35 | attributes: ['objectGUID']
|
36 | }
|
37 |
|
38 | try {
|
39 | const user = await utils.applyChanges.call(this, client, this.baseDn, opts, changes)
|
40 |
|
41 | client.destroy()
|
42 | resolve(user)
|
43 | } catch (e) {
|
44 | client.destroy()
|
45 | reject(e)
|
46 | }
|
47 | })
|
48 | })
|
49 | }
|