Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@cs125/promised-ldap

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cs125/promised-ldap

A thin wrapper over ldapjs to give a promise interface and a couple of other goodies

  • 2020.8.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

promised-ldap

This library is a quick-n-dirty shim over ldapjs to add promises and easier authentication. It currently only supports the client interface.

Usage

To create a new client:

var LdapClient = require('promised-ldap');
var client = new LdapClient({url: 'ldap://127.0.0.1:389'});

The options argument to the constructor is identical to the options argument used in ldapjs for ldap.createClient. Please see the docs here.

It supports the other methods documented there as well, except that instead of taking a callback, the methods return a promise. E.g.:

client.bind('username', 'password').then(function () { ... });

The search method in ldapjs is now accessible (in promisified form) by client._search. I have provided a method client.search with similar behaviour as the original but an arguably easier API. E.g.:

client.search(base, options).then(function (result) {
  /* result is:
  {
    entries: [...],
    references: [...]
  }
  no messing about with EventEmitters!
  */
});

Let's face it, the reason why you're messing about with LDAP is probably to add LDAP authentication to your app, so I've added a couple of helper method for this:

client.authenticate(base, cn, password).then(function (result) {
  // if the authentication succeeded, then result is the LDAP user object
  // otherwise, it is null
});

This basically does a bind using the supplied credentials, and if successful, does a search for the specified user and returns that.

If all you really wanted was the user's name, email address, and list of unqualified groups, we can do that too:

client.authenticateUser(base, cn, password).then(function (result) {
  /*
  if the authentication succeeded, then result is:
  {
    name: <the user's DisplayName>,
    email: <the user's PrincipalName>,
    groups: <an array of the CNs of groups which are in the base CN>
  }
  otherwise, result is null
  */
});

Pull requests and suggestions are welcome!

Keywords

FAQs

Package last updated on 06 Aug 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc