В этом разделе описано использование плагина PluginLDAP (пока только только для Windows)

Описание LDAP

LDAP — (англ. Lightweight Directory Access Protocol — «облегчённый протокол доступа к каталогам») — протокол прикладного уровня для доступа к службе каталогов X.500, разработанный IETF как облегчённый вариант разработанного ITU-T протокола DAP. LDAP — относительно простой протокол, использующий TCP/IP и позволяющий производить операции аутентификации (bind), поиска (search) и сравнения (compare), а также операции добавления, изменения или удаления записей.


Назначение

Плагин PluginLDAP предназначен для авторизации пользователей и выборке расширенной информации о пользователях в каталоге. Другими словами он предоставляет только операции аутентификации bind() и поиска search(), которые доступны в среде Windows 7 и старше (См. объект Ldap).

Также в него включен функционал не относящийся к LDAP, но облегчающий поиск локальных(доменных) групп и пользователей в локальных(доменных) группах. Это единственный функционал работающий в семействе Windows <= XP. Он имеет ограничения, при работе с группами расположенными в доменном каталоге Active Directory, в частности не может быть использован с глобальными и универсальными группами, только с локальными доменными группами. Немного о доменных группах можно почитать ниже.

Детальное описание групп в домене несколько сложно для понимания, следующая информация вкратце объясняет их назначение


Использование

Перед использованием плагина, его необходимо подключить командой

// Загрузить плагин и присвоить его объект переменной
var pluginLdap = post.loadPlugin('PluginLDAP');

Свойства (property)

Отсутствуют



Сигналы

Отсутствуют


Методы

Object pluginLdap.loc_user_info(String user, String host = "") Функция
Вывод информации о пользователе

var info = pluginLdap.loc_user_info("nsrb2","orb.kunpp.ru")
if(info === false) post.log('e', 'Пользователь не найден')

// возвратит объект или false
{
    "comment": "Начальник смены ЩДК2",
    "full_name": "НСРБ ЩДК2",
    "name": "nsrb2"
}

bool pluginLdap.loc_user_exist(String user, String host = "") Функция
Проверить наличие пользователя

var info = pluginLdap.loc_user_exist("nsrb2@orb.kunpp.ru");
if(info) post.log('i', 'Пользователь существует');
else     post.log('e', 'Пользователь не найден');

Array pluginLdap.loc_groups_user(String user, String host = "") Функция
Вывод локальных групп в которых есть пользователь

var info = pluginLdap.loc_groups_user("orb.kunpp.ru\\nsrb1")
if(info === false) post.log('e', 'Пользователь не найден')

// возвратит массив локальных групп или false
[
  "dr_admin",
  "jcjs",
  "Users"
]

Array pluginLdap.loc_groups_user(String group, String host = "") Функция
Выборка всех членов локальной группы

var info = pluginLdap.loc_groups_user("rados3", "orb.kunpp.ru")
if(info === false) post.log('e', 'Группа не найдена')

// возвратит массив участников или false
[
  {
    "name": "rados",
    "name_domain": "ORB\\rados",
    "type": "Group"
  },
  {
    "name": "rados4",
    "name_domain": "ORB\\rados4",
    "type": "User"
  },
  {
    "name": "rados3",
    "name_domain": "ORB\\rados3",
    "type": "User"
  },
  {
    "name": "rados1",
    "name_domain": "ORB\\rados1",
    "type": "User"
  },
  {
    "name": "rados2",
    "name_domain": "ORB\\rados2",
    "type": "User"
  }
]

bool testAuth(user, pass, host = "") Функция
Проверить сетевой логин и пароль на сервере host

var ok = pluginLdap.testAuth("rados3", "password", "dc1.orb.kunpp.ru");
if(ok) post.log('i', 'Учетные данные проверены успешно');
else   post.log('e', 'Нет пользователя или неверный пароль');


objPlugin pluginLdap.install(scriptEngine) Функция

установка в JS конструкторов объектов
ВНИМАНИЕ! начиная с версии svn.r959 функцию .install() вызывать нет необходимости, ее вызов происходит в функции post.loadPlugin()

post.pluginLdap = post.loadPlugin('PluginLDAP');// Загрузить плагин и присвоить его объект переменной

var plg = post.pluginLdap.install(scriptEngine);// Установить в JS конструторы объектов

console.trace(post.pluginLdap);                 // Вывод всех функций и свойств в лог

после выполнения этого метода, для создания экземпляров объектов используется оператор new

// Создать объект, к свойствам и
// методам которого можно обращаться в стиле Qt
var ldap_object = new Ldap();

Чтобы не использовать функцию install несколько раз рекомендуется загрузку плагина обернуть в такую конструкцию

try{String(Ldap)}catch(e){
    post.pluginLdap = post.loadPlugin('PluginLDAP');
    post.pluginLdap.install(scriptEngine);
}

String pluginLdap.objects() Функция

Вывести список всех поддерживаемых объектов

var allSupportObjects = pluginLdap.objects();
// переменной allSupportObjects присвоится строка 'Ldap'
// Плагин поддерживает создание объектов только этого типа