Я работаю с FreeIPA и успешно расширил его атрибуты, но заметил, что функция проверки в плагине Python, добавленном к FreeIPA, работает только для значений, введенных через командную строку. Значения, введенные через веб-интерфейс, сохраняются как есть, без проверки.
Поэтому я задумался о добавлении следующих модификаций на сервер:
- Включите веб-интерфейс FreeIPA для проверки значения атрибута перед его сохранением.
- Создайте новый тип синтаксиса, который будет использоваться LDAP (например, синтаксис для группы крови).
- Измените текстовое поле атрибута в веб-интерфейсе на раскрывающийся список.
решение1
- Для включения WebUI для проверки ввода данных пользователем это не обязательно, поскольку проверка может быть выполнена функцией проверки в плагине FreeIPA Python (мне просто нужно было перезагрузить сервер, чтобы изменения вступили в силу).
- Мне нет необходимости создавать новый синтаксис, я хотел заменить его процессом проверки, и поскольку он работает, в этом нет необходимости.
- Чтобы изменить тип поля атрибута, необходимо добавить «$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
.