ldap-authentication 3.1.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,7 +16,7 @@ jobs:
16
16
  runs-on: ubuntu-latest
17
17
  strategy:
18
18
  matrix:
19
- node-version: [16.x, 17.x, 18.x, 20.x]
19
+ node-version: [16.x, 17.x, 18.x, 20.x, 22.x]
20
20
 
21
21
  name: 'Integration Node v${{ matrix.node-version }}'
22
22
 
@@ -10,6 +10,13 @@
10
10
  "name": "Debug Example",
11
11
  "skipFiles": ["<node_internals>/**"],
12
12
  "program": "${workspaceFolder}/example/index.js"
13
+ },
14
+ {
15
+ "type": "node",
16
+ "request": "launch",
17
+ "name": "Debug Test",
18
+ "skipFiles": ["<node_internals>/**"],
19
+ "program": "${workspaceFolder}/test/jasmine.js"
13
20
  }
14
21
  ]
15
22
  }
package/README.md CHANGED
@@ -221,4 +221,4 @@ export async function verifyLogin(email: string, password: string) {
221
221
 
222
222
  Version 2 supports Node version 12, 14, 15, 16, 17 and 18.
223
223
 
224
- Version 3 supports Node version 15, 16, 17 and 18
224
+ Version 3 supports Node version 16, 17, 18, 20 and 22,
package/index.js CHANGED
@@ -17,7 +17,7 @@ function _searchResultToUser(pojo) {
17
17
  function _ldapBind(dn, password, starttls, ldapOpts) {
18
18
  return new Promise(function (resolve, reject) {
19
19
  ldapOpts.connectTimeout = ldapOpts.connectTimeout || 5000
20
- var client = ldap.createClient(ldapOpts)
20
+ let client = ldap.createClient(ldapOpts)
21
21
 
22
22
  client.on('connect', function () {
23
23
  if (starttls) {
@@ -29,7 +29,6 @@ function _ldapBind(dn, password, starttls, ldapOpts) {
29
29
  client.bind(dn, password, function (err) {
30
30
  if (err) {
31
31
  reject(err)
32
- client.unbind()
33
32
  return
34
33
  }
35
34
  ldapOpts.log && ldapOpts.log.trace('bind success!')
@@ -40,7 +39,6 @@ function _ldapBind(dn, password, starttls, ldapOpts) {
40
39
  client.bind(dn, password, function (err) {
41
40
  if (err) {
42
41
  reject(err)
43
- client.unbind()
44
42
  return
45
43
  }
46
44
  ldapOpts.log && ldapOpts.log.trace('bind success!')
@@ -78,7 +76,7 @@ async function _searchUser(
78
76
  attributes = null
79
77
  ) {
80
78
  return new Promise(function (resolve, reject) {
81
- var filter = new ldap.filters.EqualityFilter({
79
+ let filter = new ldap.filters.EqualityFilter({
82
80
  attribute: usernameAttribute,
83
81
  value: username,
84
82
  })
@@ -91,10 +89,9 @@ async function _searchUser(
91
89
  searchOptions.attributes = attributes
92
90
  }
93
91
  ldapClient.search(searchBase, searchOptions, function (err, res) {
94
- var user = null
92
+ let user = null
95
93
  if (err) {
96
94
  reject(err)
97
- ldapClient.unbind()
98
95
  return
99
96
  }
100
97
  res.on('searchEntry', function (entry) {
@@ -110,7 +107,6 @@ async function _searchUser(
110
107
  })
111
108
  res.on('error', function (err) {
112
109
  reject(err)
113
- ldapClient.unbind()
114
110
  })
115
111
  res.on('end', function (result) {
116
112
  if (result.status != 0) {
@@ -118,7 +114,6 @@ async function _searchUser(
118
114
  } else {
119
115
  resolve(user)
120
116
  }
121
- ldapClient.unbind()
122
117
  })
123
118
  })
124
119
  })
@@ -141,10 +136,9 @@ async function _searchUserGroups(
141
136
  scope: 'sub',
142
137
  },
143
138
  function (err, res) {
144
- var groups = []
139
+ let groups = []
145
140
  if (err) {
146
141
  reject(err)
147
- ldapClient.unbind()
148
142
  return
149
143
  }
150
144
  res.on('searchEntry', function (entry) {
@@ -153,7 +147,6 @@ async function _searchUserGroups(
153
147
  res.on('searchReference', function (referral) {})
154
148
  res.on('error', function (err) {
155
149
  reject(err)
156
- ldapClient.unbind()
157
150
  })
158
151
  res.on('end', function (result) {
159
152
  if (result.status != 0) {
@@ -161,7 +154,6 @@ async function _searchUserGroups(
161
154
  } else {
162
155
  resolve(groups)
163
156
  }
164
- ldapClient.unbind()
165
157
  })
166
158
  }
167
159
  )
@@ -183,7 +175,7 @@ async function authenticateWithAdmin(
183
175
  groupMemberUserAttribute = 'dn',
184
176
  attributes = null
185
177
  ) {
186
- var ldapAdminClient
178
+ let ldapAdminClient
187
179
  try {
188
180
  ldapAdminClient = await _ldapBind(
189
181
  adminDn,
@@ -194,14 +186,13 @@ async function authenticateWithAdmin(
194
186
  } catch (error) {
195
187
  throw { admin: error }
196
188
  }
197
- var user = await _searchUser(
189
+ let user = await _searchUser(
198
190
  ldapAdminClient,
199
191
  userSearchBase,
200
192
  usernameAttribute,
201
193
  username,
202
194
  attributes
203
195
  )
204
- ldapAdminClient.unbind()
205
196
  if (!user || !user.dn) {
206
197
  ldapOpts.log &&
207
198
  ldapOpts.log.trace(
@@ -211,26 +202,15 @@ async function authenticateWithAdmin(
211
202
  'user not found or usernameAttribute is wrong'
212
203
  )
213
204
  }
214
- var userDn = user.dn
205
+ let userDn = user.dn
215
206
  let ldapUserClient
216
207
  try {
217
208
  ldapUserClient = await _ldapBind(userDn, userPassword, starttls, ldapOpts)
218
209
  } catch (error) {
219
210
  throw error
220
211
  }
221
- ldapUserClient.unbind()
222
212
  if (groupsSearchBase && groupClass && groupMemberAttribute) {
223
- try {
224
- ldapAdminClient = await _ldapBind(
225
- adminDn,
226
- adminPassword,
227
- starttls,
228
- ldapOpts
229
- )
230
- } catch (error) {
231
- throw error
232
- }
233
- var groups = await _searchUserGroups(
213
+ let groups = await _searchUserGroups(
234
214
  ldapAdminClient,
235
215
  groupsSearchBase,
236
216
  user,
@@ -239,7 +219,6 @@ async function authenticateWithAdmin(
239
219
  groupMemberUserAttribute
240
220
  )
241
221
  user.groups = groups
242
- ldapAdminClient.unbind()
243
222
  }
244
223
  return user
245
224
  }
@@ -266,10 +245,9 @@ async function authenticateWithUser(
266
245
  }
267
246
  if (!usernameAttribute || !userSearchBase) {
268
247
  // if usernameAttribute is not provided, no user detail is needed.
269
- ldapUserClient.unbind()
270
248
  return true
271
249
  }
272
- var user = await _searchUser(
250
+ let user = await _searchUser(
273
251
  ldapUserClient,
274
252
  userSearchBase,
275
253
  usernameAttribute,
@@ -285,14 +263,8 @@ async function authenticateWithUser(
285
263
  'user logged in, but user details could not be found. Probabaly usernameAttribute or userSearchBase is wrong?'
286
264
  )
287
265
  }
288
- ldapUserClient.unbind()
289
266
  if (groupsSearchBase && groupClass && groupMemberAttribute) {
290
- try {
291
- ldapUserClient = await _ldapBind(userDn, userPassword, starttls, ldapOpts)
292
- } catch (error) {
293
- throw error
294
- }
295
- var groups = await _searchUserGroups(
267
+ let groups = await _searchUserGroups(
296
268
  ldapUserClient,
297
269
  groupsSearchBase,
298
270
  user,
@@ -301,7 +273,6 @@ async function authenticateWithUser(
301
273
  groupMemberUserAttribute
302
274
  )
303
275
  user.groups = groups
304
- ldapUserClient.unbind()
305
276
  }
306
277
  return user
307
278
  }
@@ -320,7 +291,7 @@ async function verifyUserExists(
320
291
  groupMemberUserAttribute = 'dn',
321
292
  attributes = null
322
293
  ) {
323
- var ldapAdminClient
294
+ let ldapAdminClient
324
295
  try {
325
296
  ldapAdminClient = await _ldapBind(
326
297
  adminDn,
@@ -331,14 +302,13 @@ async function verifyUserExists(
331
302
  } catch (error) {
332
303
  throw { admin: error }
333
304
  }
334
- var user = await _searchUser(
305
+ let user = await _searchUser(
335
306
  ldapAdminClient,
336
307
  userSearchBase,
337
308
  usernameAttribute,
338
309
  username,
339
310
  attributes
340
311
  )
341
- ldapAdminClient.unbind()
342
312
  if (!user || !user.dn) {
343
313
  ldapOpts.log &&
344
314
  ldapOpts.log.trace(
@@ -349,17 +319,7 @@ async function verifyUserExists(
349
319
  )
350
320
  }
351
321
  if (groupsSearchBase && groupClass && groupMemberAttribute) {
352
- try {
353
- ldapAdminClient = await _ldapBind(
354
- adminDn,
355
- adminPassword,
356
- starttls,
357
- ldapOpts
358
- )
359
- } catch (error) {
360
- throw error
361
- }
362
- var groups = await _searchUserGroups(
322
+ let groups = await _searchUserGroups(
363
323
  ldapAdminClient,
364
324
  groupsSearchBase,
365
325
  user,
@@ -368,7 +328,6 @@ async function verifyUserExists(
368
328
  groupMemberUserAttribute
369
329
  )
370
330
  user.groups = groups
371
- ldapAdminClient.unbind()
372
331
  }
373
332
  return user
374
333
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ldap-authentication",
3
- "version": "3.1.0",
3
+ "version": "3.2.1",
4
4
  "description": "A simple async nodejs library for LDAP user authentication",
5
5
  "main": "index.js",
6
6
  "types": "./index.d.ts",
package/test/jasmine.js CHANGED
@@ -3,7 +3,7 @@ var jasmine = new Jasmine()
3
3
 
4
4
  jasmine.loadConfig({
5
5
  spec_dir: 'test',
6
- spec_files: ['test.js'],
6
+ spec_files: ['**/*[sS]pec.?(m)js'],
7
7
  random: false,
8
8
  seed: null,
9
9
  stopSpecOnExpectationFailure: false,
File without changes