1 | 'use strict'
|
2 | const ldap = require('ldapjs')
|
3 | const ldapChanges = require('./changes')
|
4 | const utils = require('./utils')
|
5 |
|
6 | module.exports = createUser
|
7 |
|
8 | function createUser (params) {
|
9 | return new Promise((resolve, reject) => {
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 | const client = this.getClient()
|
28 |
|
29 | client.bind(params.adminDn, params.adminPassword, async (err) => {
|
30 |
|
31 | if (err) {
|
32 | console.log(err)
|
33 | client.destroy()
|
34 | return reject(err)
|
35 | }
|
36 |
|
37 | const commonName = `${params.firstName} ${params.lastName}`
|
38 | const userPrincipalName = `${params.username}@${params.domain}`
|
39 | const entryDN = `CN=${commonName},${params.usersDn}`
|
40 | const newUser = {
|
41 | samAccountName: params.username,
|
42 | name: commonName,
|
43 | cn: commonName,
|
44 | givenName: params.firstName,
|
45 | sn: params.lastName,
|
46 | displayName: commonName,
|
47 | physicalDeliveryOfficeName: String(params.userId) || '',
|
48 | mail: params.email,
|
49 | userPassword: params.password,
|
50 | objectClass: ["top", "person", "organizationalPerson", "user"],
|
51 | userPrincipalName,
|
52 | telephoneNumber: String(params.userId) ? '41' + String(params.userId) : ''
|
53 | }
|
54 |
|
55 | client.add(entryDN, newUser, (err2, user) => {
|
56 | client.destroy()
|
57 | if (err2) reject(err2)
|
58 | resolve(user)
|
59 | })
|
60 |
|
61 | })
|
62 | })
|
63 | }
|