Как я могу передать атрибут динамически при изменении пользователя с помощью ldapJS - PullRequest
0 голосов
/ 27 мая 2020

Я использую ldap js, и я пытаюсь настроить свой собственный API для изменения / обновления каталога LDAP, и он работает нормально, за исключением случаев, когда я хочу изменить учетную запись, например

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

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

Я нахожу невозможным динамически передать фактический атрибут «компания» (или что-то еще, что мне нужно изменить), я пробовал:

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

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

Но я получаю -

Ошибка при изменении пользователя: NoSuchAttribute

, и я также пробовал его как строку:

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

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

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

Но я получаю:

Ошибка ('Допускается только один атрибут для каждого изменения');

Я не настолько опытен, поэтому не совсем уверен, возможно это или нет?

1 Ответ

0 голосов
/ 27 мая 2020

Да, это возможно, вам просто нужно изменить свой код на

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

, если вы хотите, чтобы атрибут компании был динамическим c и следует использовать синтаксис вычисленных свойств, подобный этому

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