0

I'm using ldapjs and I'm trying to configure my own API to modify/update an LDAP directory and it works OK except when I want to modify an account e.g.

var change = new ldap.Change({
  operation: 'replace',
  modification: {
    company: 'Company Name'
  }
});

client.modify('cn=foo, o=example', change, function(err) {
  assert.ifError(err);
});

I'm finding it impossible to pass in dynamically the actual attribute 'company' (or whatever it is I need to alter), I've tried:

        var attr = "company";
        var value = "Company Name";

        var change = new ldap.Change({
            operation: 'replace',
            modification: {attr:value}
        })

But I get-

Error modifying user: NoSuchAttribute

and I've also tried it as a string:

        var attr = "company";
        var value = "Company Name";

        var modification = "{ " + attr + ":" + value + "}";

        var change = new ldap.Change({
            operation: 'replace',
            modification
        })

But I get:

Error('Only one attribute per Change allowed');

I'm not that experienced, so not really sure if this is possible or not?

Chris
  • 5
  • 1

1 Answers1

1

Yes this is possible, you just have to change your code to

  const someCompany = 'someComapny'
  var change = new ldap.Change({
          operation: 'replace',
          modification: {company:someCompany}
   })

if u want the company attribute to be dynamic u should use the computed property syntax like this

  const someCompany = 'someComapny'
  const companyKey = 'key'
  var change = new ldap.Change({
          operation: 'replace',
          modification: {[companyKey]:someCompany}
   })
ehab
  • 7,162
  • 1
  • 25
  • 30