Ich arbeite mit FreeIPA und habe seine Attribute erfolgreich erweitert, aber festgestellt, dass die Überprüfungsfunktion im Python-Plugin, das zu FreeIPA hinzugefügt wurde, nur für die über die Befehlszeile eingegebenen Werte funktioniert. Über die Web-Benutzeroberfläche eingegebene Werte werden unverändert und ohne Überprüfung gespeichert.
Daher habe ich überlegt, dem Server die folgenden Änderungen hinzuzufügen:
- Aktivieren Sie die FreeIPA-Web-Benutzeroberfläche, um den Attributwert vor dem Speichern zu überprüfen.
- Erstellen Sie einen neuen Syntaxtyp zur Verwendung durch LDAP (z. B. eine Syntax für die Blutgruppe).
- Ändern Sie das Textfeld des Attributs in der Web-Benutzeroberfläche in eine Dropdown-Liste.
Antwort1
- Damit die WebUI die Benutzereingaben überprüfen kann, ist es nicht erforderlich, da die Überprüfung durch die Überprüfungsfunktion im FreeIPA Python-Plugin erfolgen kann (ich musste lediglich meinen Server neu starten, damit die Änderungen wirksam wurden).
- Es besteht für mich keine Notwendigkeit, eine neue Syntax zu erstellen, ich wollte sie als Ersatz für den Verifizierungsprozess und da sie funktioniert, ist das nicht notwendig.
- Um einen Attributfeldtyp zu ändern, müssen Sie beim Erstellen des neuen Attributfelds in der JavaScript-Datei „$type“ hinzufügen:
Erstellen Sie einen Textbereich:
section.fields.push({
$type:'textarea',
name: 'ldap_attribute_name',
label: 'some label name'
});
Erstellen Sie ein Dropdown-Menü:
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'
});
Erstellen Sie ein Optionsfeld:
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'
});
Sie können nach weiteren Optionen suchen, indem Sie die /usr/share/ipa/ui/js/freeipa/app.js
Datei durchsuchen.