Назад | Перейти на главную страницу

Расширение LDAP и FreeIPA

Я работаю с FreeIPA и успешно расширил его атрибуты, но заметил, что функция проверки в подключаемом модуле Python, добавленном в FreeIPA, работает только для значений, введенных через командную строку. Значения, введенные через веб-интерфейс, сохраняются без проверки.

Поэтому мне было интересно добавить на сервер следующие модификации:

  1. Включите веб-интерфейс FreeIPA, чтобы проверить значение атрибута перед его сохранением.
  2. Создайте новый тип синтаксиса, который будет использоваться LDAP (например, синтаксис для группы крови).
  3. Измените текстовое поле атрибута в веб-интерфейсе на раскрывающийся список.
  1. Для включения WebUI для проверки пользовательского ввода это не требуется, поскольку проверка может быть выполнена функцией проверки в плагине FreeIPA Python (мне просто нужно было перезагрузить сервер, чтобы изменения вступили в силу).
  2. Мне не нужно создавать новый синтаксис, я хотел, чтобы он заменил процесс проверки, и, поскольку он работает, в этом нет необходимости.
  3. Чтобы изменить тип поля атрибута, вам нужно добавить «$ type» при создании нового поля атрибута в файле javascript:

создать текстовую область:

section.fields.push({
     $type:'textarea',
     name: 'ldap_attribute_name',
     label: 'some label name'
});

создать раскрывающееся меню:

section.fields.push({
     $type:'entity_select',
     other_entity:'user',         // get the users list
     other_field:'uid',           // get the user IDs and display them in the list
     name: 'ldap_attribute_name',
     label: 'some label name'
});

создать переключатель:

section.fields.push({
     $type:'radio',
     options:[          // create the new radio buttons
       {label:'first button label',value:'first button value'},
       {label:'second button label',value:'second button value'}
     ],
     name: 'ldap_attribute_name',
     label: 'some label name'
});

вы можете проверить наличие дополнительных опций, раскопав /usr/share/ipa/ui/js/freeipa/app.js файл.