To add a custom LDAP fields to the User interface you have to:
- Create a custom schema based on nuxeo's user.xsd schema with custom fields related to the fields in your LDAP system. schemas/myuser.xsd- <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:nxs="http://www.nuxeo.org/ecm/schemas/myuser" targetNamespace="http://www.nuxeo.org/ecm/schemas/myuser"> <xs:include schemaLocation="base.xsd" /> <xs:element name="username" type="xs:string" /> <xs:element name="password" type="xs:string" /> <xs:element name="email" type="xs:string" /> <xs:element name="firstName" type="xs:string" /> <xs:element name="lastName" type="xs:string" /> <xs:element name="company" type="xs:string" /> <!-- your custom telephone field --> <xs:element name="telephone" type="xs:string" /> <xs:element name="groups" type="nxs:stringList" /> </xs:schema>
- Add your schema via Nuxeo's extension system. OSGI-INF/schema-contrib.xml- <?xml version="1.0"?> <component name="com.example.myproject.myuser.schema"> <extension target="org.nuxeo.ecm.core.schema.TypeService" point="schema"> <schema name="myuser" src="schemas/myuser.xsd" /> </extension> </component>
- Modify your LDAP configuration file in Nuxeo ( - default-ldap-users-directory-bundle.xml) to include:- your custom schema, default-ldap-users-directory-bundle.xml- <extension target="org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory" point="directories"> <directory name="userDirectory"> <server>default</server> <!-- association between your custom schema and the directory --> <schema>myuser</schema>
- mapping between your schema and your LDAP fields. default-ldap-users-directory-bundle.xml (continued)- <fieldMapping name="username">uid</fieldMapping> <fieldMapping name="password">userPassword</fieldMapping> <fieldMapping name="firstName">givenName</fieldMapping> <fieldMapping name="lastName">sn</fieldMapping> <fieldMapping name="company">o</fieldMapping> <fieldMapping name="email">mail</fieldMapping> <fieldMapping name="telephone">telephoneNumber</fieldMapping>
 
- Modify the UI. - Add your custom widget to the layout. default-ldap-users-directory-bundle.xml(continued)- <extension target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager" point="layouts"> <layout name="user"> <templates> <template mode="any">/layouts/layout_default_template.xhtml</template> </templates> <rows> <row> <widget>username</widget> </row> <row> <!-- your custom telephone widget--> <widget>telephone</widget> </row>
- Define a new widget for your custom field to be used in the layout above. default-ldap-users-directory-bundle.xml(continued)- <widget name="telephone" type="text"> <labels> <label mode="any">telephone</label> </labels> <translated>true</translated> <fields> <field schema="myuser">telephone</field> </fields> <widgetModes> <mode value="editPassword">hidden</mode> </widgetModes> <properties widgetMode="edit"> <property name="required">true</property> <property name="styleClass">dataInputText</property> </properties> </widget>