Merge pull request #463 from tonkatu05/master

add ldap attributes
This commit is contained in:
Shinsuke Sugaya 2016-04-05 19:00:40 +09:00
commit fd50b28e23
7 changed files with 978 additions and 2 deletions

View file

@ -55,6 +55,105 @@ public class CreateForm implements Serializable {
@Size(max = 1000)
public String mail;
@Size(max = 1000)
public String employeeNumber;
@Size(max = 1000)
public String telephoneNumber;
@Size(max = 1000)
public String homePhone;
@Size(max = 1000)
public String homePostalAddress;
@Size(max = 1000)
public String labeledURI;
@Size(max = 1000)
public String roomNumber;
@Size(max = 1000)
public String description;
@Size(max = 1000)
public String title;
@Size(max = 1000)
public String pager;
@Size(max = 1000)
public String street;
@Size(max = 1000)
public String postalCode;
@Size(max = 1000)
public String physicalDeliveryOfficeName;
@Size(max = 1000)
public String destinationIndicator;
@Size(max = 1000)
public String internationaliSDNNumber;
@Size(max = 1000)
public String state;
@Size(max = 1000)
public String employeeType;
@Size(max = 1000)
public String facsimileTelephoneNumber;
@Size(max = 1000)
public String postOfficeBox;
@Size(max = 1000)
public String initials;
@Size(max = 1000)
public String carLicense;
@Size(max = 1000)
public String mobile;
@Size(max = 1000)
public String postalAddress;
@Size(max = 1000)
public String city;
@Size(max = 1000)
public String teletexTerminalIdentifier;
@Size(max = 1000)
public String x121Address;
@Size(max = 1000)
public String businessCategory;
@Size(max = 1000)
public String registeredAddress;
@Size(max = 1000)
public String displayName;
@Size(max = 1000)
public String preferredLanguage;
@Size(max = 1000)
public String departmentNumber;
@Size(max = 1000)
public String uidNumber;
@Size(max = 1000)
public String gidNumber;
@Size(max = 1000)
public String homeDirectory;
public String[] roles;
public String[] groups;

View file

@ -363,6 +363,223 @@ public class LdapManager {
OptionalUtil.ofNullable(user.getMail()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrMail, s))
.orElse(() -> getAttributeValueList(result, attrMail).stream().forEach(v -> modifyDeleteEntry(modifyList, attrMail, v)));
final String attrEmployeeNumber = fessConfig.getLdapAttrEmployeeNumber();
OptionalUtil
.ofNullable(user.getEmployeeNumber())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrEmployeeNumber, s))
.orElse(() -> getAttributeValueList(result, attrEmployeeNumber).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrEmployeeNumber, v)));
final String attrTelephoneNumber = fessConfig.getLdapAttrTelephoneNumber();
OptionalUtil
.ofNullable(user.getTelephoneNumber())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrTelephoneNumber, s))
.orElse(() -> getAttributeValueList(result, attrTelephoneNumber).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrTelephoneNumber, v)));
final String attrHomePhone = fessConfig.getLdapAttrHomePhone();
OptionalUtil
.ofNullable(user.getHomePhone())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrHomePhone, s))
.orElse(() -> getAttributeValueList(result, attrHomePhone).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrHomePhone, v)));
final String attrHomePostalAddress = fessConfig.getLdapAttrHomePostalAddress();
OptionalUtil
.ofNullable(user.getHomePostalAddress())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrHomePostalAddress, s))
.orElse(() -> getAttributeValueList(result, attrHomePostalAddress).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrHomePostalAddress, v)));
final String attrLabeledURI = fessConfig.getLdapAttrLabeleduri();
OptionalUtil
.ofNullable(user.getLabeledURI())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrLabeledURI, s))
.orElse(() -> getAttributeValueList(result, attrLabeledURI).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrLabeledURI, v)));
final String attrRoomNumber = fessConfig.getLdapAttrRoomNumber();
OptionalUtil
.ofNullable(user.getRoomNumber())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrRoomNumber, s))
.orElse(() -> getAttributeValueList(result, attrRoomNumber).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrRoomNumber, v)));
final String attrDescription = fessConfig.getLdapAttrDescription();
OptionalUtil
.ofNullable(user.getDescription())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrDescription, s))
.orElse(() -> getAttributeValueList(result, attrDescription).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrDescription, v)));
final String attrTitle = fessConfig.getLdapAttrTitle();
OptionalUtil.ofNullable(user.getTitle()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrTitle, s))
.orElse(() -> getAttributeValueList(result, attrTitle).stream().forEach(v -> modifyDeleteEntry(modifyList, attrTitle, v)));
final String attrPager = fessConfig.getLdapAttrPager();
OptionalUtil.ofNullable(user.getPager()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrPager, s))
.orElse(() -> getAttributeValueList(result, attrPager).stream().forEach(v -> modifyDeleteEntry(modifyList, attrPager, v)));
final String attrStreet = fessConfig.getLdapAttrStreet();
OptionalUtil
.ofNullable(user.getStreet())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrStreet, s))
.orElse(() -> getAttributeValueList(result, attrStreet).stream().forEach(v -> modifyDeleteEntry(modifyList, attrStreet, v)));
final String attrPostalCode = fessConfig.getLdapAttrPostalCode();
OptionalUtil
.ofNullable(user.getPostalCode())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrPostalCode, s))
.orElse(() -> getAttributeValueList(result, attrPostalCode).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrPostalCode, v)));
final String attrPhysicalDeliveryOfficeName = fessConfig.getLdapAttrPhysicalDeliveryOfficeName();
OptionalUtil
.ofNullable(user.getPhysicalDeliveryOfficeName())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrPhysicalDeliveryOfficeName, s))
.orElse(() -> getAttributeValueList(result, attrPhysicalDeliveryOfficeName).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrPhysicalDeliveryOfficeName, v)));
final String attrDestinationIndicator = fessConfig.getLdapAttrDestinationIndicator();
OptionalUtil
.ofNullable(user.getDestinationIndicator())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrDestinationIndicator, s))
.orElse(() -> getAttributeValueList(result, attrDestinationIndicator).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrDestinationIndicator, v)));
final String attrInternationaliSDNNumber = fessConfig.getLdapAttrInternationalisdnNumber();
OptionalUtil
.ofNullable(user.getInternationaliSDNNumber())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrInternationaliSDNNumber, s))
.orElse(() -> getAttributeValueList(result, attrInternationaliSDNNumber).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrInternationaliSDNNumber, v)));
final String attrState = fessConfig.getLdapAttrState();
OptionalUtil.ofNullable(user.getState()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrState, s))
.orElse(() -> getAttributeValueList(result, attrState).stream().forEach(v -> modifyDeleteEntry(modifyList, attrState, v)));
final String attrEmployeeType = fessConfig.getLdapAttrEmployeeType();
OptionalUtil
.ofNullable(user.getEmployeeType())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrEmployeeType, s))
.orElse(() -> getAttributeValueList(result, attrEmployeeType).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrEmployeeType, v)));
final String attrFacsimileTelephoneNumber = fessConfig.getLdapAttrFacsimileTelephoneNumber();
OptionalUtil
.ofNullable(user.getFacsimileTelephoneNumber())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrFacsimileTelephoneNumber, s))
.orElse(() -> getAttributeValueList(result, attrFacsimileTelephoneNumber).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrFacsimileTelephoneNumber, v)));
final String attrPostOfficeBox = fessConfig.getLdapAttrPostOfficeBox();
OptionalUtil
.ofNullable(user.getPostOfficeBox())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrPostOfficeBox, s))
.orElse(() -> getAttributeValueList(result, attrPostOfficeBox).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrPostOfficeBox, v)));
final String attrInitials = fessConfig.getLdapAttrInitials();
OptionalUtil
.ofNullable(user.getInitials())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrInitials, s))
.orElse(() -> getAttributeValueList(result, attrInitials).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrInitials, v)));
final String attrCarLicense = fessConfig.getLdapAttrCarLicense();
OptionalUtil
.ofNullable(user.getCarLicense())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrCarLicense, s))
.orElse(() -> getAttributeValueList(result, attrCarLicense).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrCarLicense, v)));
final String attrMobile = fessConfig.getLdapAttrMobile();
OptionalUtil
.ofNullable(user.getMobile())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrMobile, s))
.orElse(() -> getAttributeValueList(result, attrMobile).stream().forEach(v -> modifyDeleteEntry(modifyList, attrMobile, v)));
final String attrPostalAddress = fessConfig.getLdapAttrPostalAddress();
OptionalUtil
.ofNullable(user.getPostalAddress())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrPostalAddress, s))
.orElse(() -> getAttributeValueList(result, attrPostalAddress).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrPostalAddress, v)));
final String attrCity = fessConfig.getLdapAttrCity();
OptionalUtil.ofNullable(user.getCity()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrCity, s))
.orElse(() -> getAttributeValueList(result, attrCity).stream().forEach(v -> modifyDeleteEntry(modifyList, attrCity, v)));
final String attrTeletexTerminalIdentifier = fessConfig.getLdapAttrTeletexTerminalIdentifier();
OptionalUtil
.ofNullable(user.getTeletexTerminalIdentifier())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrTeletexTerminalIdentifier, s))
.orElse(() -> getAttributeValueList(result, attrTeletexTerminalIdentifier).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrTeletexTerminalIdentifier, v)));
final String attrX121Address = fessConfig.getLdapAttrX121Address();
OptionalUtil
.ofNullable(user.getX121Address())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrX121Address, s))
.orElse(() -> getAttributeValueList(result, attrX121Address).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrX121Address, v)));
final String attrBusinessCategory = fessConfig.getLdapAttrBusinessCategory();
OptionalUtil
.ofNullable(user.getBusinessCategory())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrBusinessCategory, s))
.orElse(() -> getAttributeValueList(result, attrBusinessCategory).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrBusinessCategory, v)));
final String attrRegisteredAddress = fessConfig.getLdapAttrRegisteredAddress();
OptionalUtil
.ofNullable(user.getRegisteredAddress())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrRegisteredAddress, s))
.orElse(() -> getAttributeValueList(result, attrRegisteredAddress).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrRegisteredAddress, v)));
final String attrDisplayName = fessConfig.getLdapAttrDisplayName();
OptionalUtil
.ofNullable(user.getDisplayName())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrDisplayName, s))
.orElse(() -> getAttributeValueList(result, attrDisplayName).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrDisplayName, v)));
final String attrPreferredLanguage = fessConfig.getLdapAttrPreferredLanguage();
OptionalUtil
.ofNullable(user.getPreferredLanguage())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrPreferredLanguage, s))
.orElse(() -> getAttributeValueList(result, attrPreferredLanguage).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrPreferredLanguage, v)));
final String attrDepartmentNumber = fessConfig.getLdapAttrDepartmentNumber();
OptionalUtil
.ofNullable(user.getDepartmentNumber())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrDepartmentNumber, s))
.orElse(() -> getAttributeValueList(result, attrDepartmentNumber).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrDepartmentNumber, v)));
final String attrUidNumber = fessConfig.getLdapAttrUidNumber();
OptionalUtil
.ofNullable(user.getUidNumber())
.filter(s -> StringUtil.isNotBlank(s.toString()))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrUidNumber, s.toString()))
.orElse(() -> getAttributeValueList(result, attrUidNumber).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrUidNumber, v)));
final String attrGidNumber = fessConfig.getLdapAttrGidNumber();
OptionalUtil
.ofNullable(user.getGidNumber())
.filter(s -> StringUtil.isNotBlank(s.toString()))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrGidNumber, s.toString()))
.orElse(() -> getAttributeValueList(result, attrGidNumber).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrGidNumber, v)));
final String attrHomeDirectory = fessConfig.getLdapAttrHomeDirectory();
OptionalUtil
.ofNullable(user.getHomeDirectory())
.filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> modifyReplaceEntry(modifyList, attrHomeDirectory, s))
.orElse(() -> getAttributeValueList(result, attrHomeDirectory).stream().forEach(
v -> modifyDeleteEntry(modifyList, attrHomeDirectory, v)));
modify(userDN, modifyList, adminEnv);
}
@ -377,6 +594,72 @@ public class LdapManager {
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrGivenName(), s)));
OptionalUtil.ofNullable(user.getMail()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrMail(), s)));
OptionalUtil.ofNullable(user.getEmployeeNumber()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrEmployeeNumber(), s)));
OptionalUtil.ofNullable(user.getTelephoneNumber()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrTelephoneNumber(), s)));
OptionalUtil.ofNullable(user.getHomePhone()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrHomePhone(), s)));
OptionalUtil.ofNullable(user.getHomePostalAddress()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrHomePostalAddress(), s)));
OptionalUtil.ofNullable(user.getLabeledURI()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrLabeleduri(), s)));
OptionalUtil.ofNullable(user.getRoomNumber()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrRoomNumber(), s)));
OptionalUtil.ofNullable(user.getDescription()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrDescription(), s)));
OptionalUtil.ofNullable(user.getTitle()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrTitle(), s)));
OptionalUtil.ofNullable(user.getPager()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrPager(), s)));
OptionalUtil.ofNullable(user.getStreet()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrStreet(), s)));
OptionalUtil.ofNullable(user.getPostalCode()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrPostalCode(), s)));
OptionalUtil.ofNullable(user.getPhysicalDeliveryOfficeName()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrPhysicalDeliveryOfficeName(), s)));
OptionalUtil.ofNullable(user.getDestinationIndicator()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrDestinationIndicator(), s)));
OptionalUtil.ofNullable(user.getInternationaliSDNNumber()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrInternationalisdnNumber(), s)));
OptionalUtil.ofNullable(user.getState()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrState(), s)));
OptionalUtil.ofNullable(user.getEmployeeType()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrEmployeeType(), s)));
OptionalUtil.ofNullable(user.getFacsimileTelephoneNumber()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrFacsimileTelephoneNumber(), s)));
OptionalUtil.ofNullable(user.getPostOfficeBox()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrPostOfficeBox(), s)));
OptionalUtil.ofNullable(user.getInitials()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrInitials(), s)));
OptionalUtil.ofNullable(user.getCarLicense()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrCarLicense(), s)));
OptionalUtil.ofNullable(user.getMobile()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrMobile(), s)));
OptionalUtil.ofNullable(user.getPostalAddress()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrPostalAddress(), s)));
OptionalUtil.ofNullable(user.getCity()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrCity(), s)));
OptionalUtil.ofNullable(user.getTeletexTerminalIdentifier()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrTeletexTerminalIdentifier(), s)));
OptionalUtil.ofNullable(user.getX121Address()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrX121Address(), s)));
OptionalUtil.ofNullable(user.getBusinessCategory()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrBusinessCategory(), s)));
OptionalUtil.ofNullable(user.getRegisteredAddress()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrRegisteredAddress(), s)));
OptionalUtil.ofNullable(user.getDisplayName()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrDisplayName(), s)));
OptionalUtil.ofNullable(user.getPreferredLanguage()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrPreferredLanguage(), s)));
OptionalUtil.ofNullable(user.getDepartmentNumber()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrDepartmentNumber(), s)));
OptionalUtil.ofNullable(user.getUidNumber()).filter(s -> StringUtil.isNotBlank(s.toString()))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrUidNumber(), s)));
OptionalUtil.ofNullable(user.getGidNumber()).filter(s -> StringUtil.isNotBlank(s.toString()))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrGidNumber(), s)));
OptionalUtil.ofNullable(user.getHomeDirectory()).filter(s -> StringUtil.isNotBlank(s))
.ifPresent(s -> entry.put(new BasicAttribute(fessConfig.getLdapAttrHomeDirectory(), s)));
}
public void delete(final User user) {

View file

@ -684,5 +684,71 @@ labels.user_given_name=First Name
labels.givenName=First Name
labels.user_surname=Last Name
labels.surame=Last Name
labels.user_mail=E-Mail
labels.mail=E-Mail
labels.user_mail=E-mail
labels.mail=E-mail
labels.user_employeeNumber=employeeNumber
labels.employeeNumber=employeeNumber
labels.user_telephoneNumber=telephoneNumber
labels.telephoneNumber=telephoneNumber
labels.user_homePhone=homePhone
labels.homePhone=homePhone
labels.user_homePostalAddress=homePostalAddress
labels.homePostalAddress=homePostalAddress
labels.user_labeledURI=labeledURI
labels.labeledURI=labeledURI
labels.user_roomNumber=roomNumber
labels.roomNumber=roomNumber
labels.user_description=description
labels.description=description
labels.user_title=title
labels.title=title
labels.user_pager=pager
labels.pager=pager
labels.user_street=street
labels.street=street
labels.user_postalCode=postalCode
labels.postalCode=postalCode
labels.user_physicalDeliveryOfficeName=physicalDeliveryOfficeName
labels.physicalDeliveryOfficeName=physicalDeliveryOfficeName
labels.user_destinationIndicator=destinationIndicator
labels.destinationIndicator=destinationIndicator
labels.user_internationaliSDNNumber=internationaliSDNNumber
labels.internationaliSDNNumber=internationaliSDNNumber
labels.user_state=state
labels.state=state
labels.user_employeeType=employeeType
labels.employeeType=employeeType
labels.user_facsimileTelephoneNumber=facsimileTelephoneNumber
labels.facsimileTelephoneNumber=facsimileTelephoneNumber
labels.user_postOfficeBox=postOfficeBox
labels.postOfficeBox=postOfficeBox
labels.user_initials=initials
labels.initials=initials
labels.user_carLicense=carLicense
labels.carLicense=carLicense
labels.user_mobile=mobile
labels.mobile=mobile
labels.user_postalAddress=postalAddress
labels.postalAddress=postalAddress
labels.user_city=city
labels.city=city
labels.user_teletexTerminalIdentifier=teletexTerminalIdentifier
labels.teletexTerminalIdentifier=teletexTerminalIdentifier
labels.user_x121Address=x121Address
labels.x121Address=x121Address
labels.user_businessCategory=businessCategory
labels.businessCategory=businessCategory
labels.user_registeredAddress=registeredAddress
labels.registeredAddress=registeredAddress
labels.user_displayName=displayName
labels.displayName=displayName
labels.user_preferredLanguage=preferredLanguage
labels.preferredLanguage=preferredLanguage
labels.user_departmentNumber=departmentNumber
labels.departmentNumber=departmentNumber
labels.user_uidNumber=uidNumber
labels.uidNumber=uidNumber
labels.user_gidNumber=gidNumber
labels.gidNumber=gidNumber
labels.user_homeDirectory=homeDirectory
labels.homeDirectory=homeDirectory

View file

@ -686,3 +686,69 @@ labels.user_surname=Last Name
labels.surame=Last Name
labels.user_mail=E-Mail
labels.mail=E-Mail
labels.user_employeeNumber=employeeNumber
labels.employeeNumber=employeeNumber
labels.user_telephoneNumber=telephoneNumber
labels.telephoneNumber=telephoneNumber
labels.user_homePhone=homePhone
labels.homePhone=homePhone
labels.user_homePostalAddress=homePostalAddress
labels.homePostalAddress=homePostalAddress
labels.user_labeledURI=labeledURI
labels.labeledURI=labeledURI
labels.user_roomNumber=roomNumber
labels.roomNumber=roomNumber
labels.user_description=description
labels.description=description
labels.user_title=title
labels.title=title
labels.user_pager=pager
labels.pager=pager
labels.user_street=street
labels.street=street
labels.user_postalCode=postalCode
labels.postalCode=postalCode
labels.user_physicalDeliveryOfficeName=physicalDeliveryOfficeName
labels.physicalDeliveryOfficeName=physicalDeliveryOfficeName
labels.user_destinationIndicator=destinationIndicator
labels.destinationIndicator=destinationIndicator
labels.user_internationaliSDNNumber=internationaliSDNNumber
labels.internationaliSDNNumber=internationaliSDNNumber
labels.user_state=state
labels.state=state
labels.user_employeeType=employeeType
labels.employeeType=employeeType
labels.user_facsimileTelephoneNumber=facsimileTelephoneNumber
labels.facsimileTelephoneNumber=facsimileTelephoneNumber
labels.user_postOfficeBox=postOfficeBox
labels.postOfficeBox=postOfficeBox
labels.user_initials=initials
labels.initials=initials
labels.user_carLicense=carLicense
labels.carLicense=carLicense
labels.user_mobile=mobile
labels.mobile=mobile
labels.user_postalAddress=postalAddress
labels.postalAddress=postalAddress
labels.user_city=city
labels.city=city
labels.user_teletexTerminalIdentifier=teletexTerminalIdentifier
labels.teletexTerminalIdentifier=teletexTerminalIdentifier
labels.user_x121Address=x121Address
labels.x121Address=x121Address
labels.user_businessCategory=businessCategory
labels.businessCategory=businessCategory
labels.user_registeredAddress=registeredAddress
labels.registeredAddress=registeredAddress
labels.user_displayName=displayName
labels.displayName=displayName
labels.user_preferredLanguage=preferredLanguage
labels.preferredLanguage=preferredLanguage
labels.user_departmentNumber=departmentNumber
labels.departmentNumber=departmentNumber
labels.user_uidNumber=uidNumber
labels.uidNumber=uidNumber
labels.user_gidNumber=gidNumber
labels.gidNumber=gidNumber
labels.user_homeDirectory=homeDirectory
labels.homeDirectory=homeDirectory

View file

@ -686,3 +686,69 @@ labels.user_surname=\u540d\u524d(\u59d3)
labels.surame=\u540d\u524d(\u59d3)
labels.user_mail=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9
labels.mail=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9
labels.user_employeeNumber=employeeNumber
labels.employeeNumber=employeeNumber
labels.user_telephoneNumber=telephoneNumber
labels.telephoneNumber=telephoneNumber
labels.user_homePhone=homePhone
labels.homePhone=homePhone
labels.user_homePostalAddress=homePostalAddress
labels.homePostalAddress=homePostalAddress
labels.user_labeledURI=labeledURI
labels.labeledURI=labeledURI
labels.user_roomNumber=roomNumber
labels.roomNumber=roomNumber
labels.user_description=description
labels.description=description
labels.user_title=title
labels.title=title
labels.user_pager=pager
labels.pager=pager
labels.user_street=street
labels.street=street
labels.user_postalCode=postalCode
labels.postalCode=postalCode
labels.user_physicalDeliveryOfficeName=physicalDeliveryOfficeName
labels.physicalDeliveryOfficeName=physicalDeliveryOfficeName
labels.user_destinationIndicator=destinationIndicator
labels.destinationIndicator=destinationIndicator
labels.user_internationaliSDNNumber=internationaliSDNNumber
labels.internationaliSDNNumber=internationaliSDNNumber
labels.user_state=state
labels.state=state
labels.user_employeeType=employeeType
labels.employeeType=employeeType
labels.user_facsimileTelephoneNumber=facsimileTelephoneNumber
labels.facsimileTelephoneNumber=facsimileTelephoneNumber
labels.user_postOfficeBox=postOfficeBox
labels.postOfficeBox=postOfficeBox
labels.user_initials=initials
labels.initials=initials
labels.user_carLicense=carLicense
labels.carLicense=carLicense
labels.user_mobile=mobile
labels.mobile=mobile
labels.user_postalAddress=postalAddress
labels.postalAddress=postalAddress
labels.user_city=city
labels.city=city
labels.user_teletexTerminalIdentifier=teletexTerminalIdentifier
labels.teletexTerminalIdentifier=teletexTerminalIdentifier
labels.user_x121Address=x121Address
labels.x121Address=x121Address
labels.user_businessCategory=businessCategory
labels.businessCategory=businessCategory
labels.user_registeredAddress=registeredAddress
labels.registeredAddress=registeredAddress
labels.user_displayName=displayName
labels.displayName=displayName
labels.user_preferredLanguage=preferredLanguage
labels.preferredLanguage=preferredLanguage
labels.user_departmentNumber=departmentNumber
labels.departmentNumber=departmentNumber
labels.user_uidNumber=uidNumber
labels.uidNumber=uidNumber
labels.user_gidNumber=gidNumber
labels.gidNumber=gidNumber
labels.user_homeDirectory=homeDirectory
labels.homeDirectory=homeDirectory

View file

@ -62,6 +62,138 @@
<th class="col-xs-2"><la:message key="labels.user_mail" /></th>
<td>${f:h(mail)}<la:hidden property="mail" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_employeeNumber" /></th>
<td>${f:h(employeeNumber)}<la:hidden property="employeeNumber" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_telephoneNumber" /></th>
<td>${f:h(telephoneNumber)}<la:hidden property="telephoneNumber" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_homePhone" /></th>
<td>${f:h(homePhone)}<la:hidden property="homePhone" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_homePostalAddress" /></th>
<td>${f:h(homePostalAddress)}<la:hidden property="homePostalAddress" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_labeledURI" /></th>
<td>${f:h(labeledURI)}<la:hidden property="labeledURI" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_roomNumber" /></th>
<td>${f:h(roomNumber)}<la:hidden property="roomNumber" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_description" /></th>
<td>${f:h(description)}<la:hidden property="description" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_title" /></th>
<td>${f:h(title)}<la:hidden property="title" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_pager" /></th>
<td>${f:h(pager)}<la:hidden property="pager" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_street" /></th>
<td>${f:h(street)}<la:hidden property="street" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_postalCode" /></th>
<td>${f:h(postalCode)}<la:hidden property="postalCode" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_physicalDeliveryOfficeName" /></th>
<td>${f:h(physicalDeliveryOfficeName)}<la:hidden property="physicalDeliveryOfficeName" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_destinationIndicator" /></th>
<td>${f:h(destinationIndicator)}<la:hidden property="destinationIndicator" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_internationaliSDNNumber" /></th>
<td>${f:h(internationaliSDNNumber)}<la:hidden property="internationaliSDNNumber" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_state" /></th>
<td>${f:h(state)}<la:hidden property="state" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_employeeType" /></th>
<td>${f:h(facsimileTelephoneNumber)}<la:hidden property="employeeType" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_facsimileTelephoneNumber" /></th>
<td>${f:h(facsimileTelephoneNumber)}<la:hidden property="facsimileTelephoneNumber" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_postOfficeBox" /></th>
<td>${f:h(postOfficeBox)}<la:hidden property="postOfficeBox" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_initials" /></th>
<td>${f:h(initials)}<la:hidden property="initials" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_carLicense" /></th>
<td>${f:h(carLicense)}<la:hidden property="carLicense" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_mobile" /></th>
<td>${f:h(mobile)}<la:hidden property="mobile" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_postalAddress" /></th>
<td>${f:h(postalAddress)}<la:hidden property="postalAddress" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_city" /></th>
<td>${f:h(city)}<la:hidden property="city" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_teletexTerminalIdentifier" /></th>
<td>${f:h(teletexTerminalIdentifier)}<la:hidden property="teletexTerminalIdentifier" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_x121Address" /></th>
<td>${f:h(x121Address)}<la:hidden property="x121Address" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_businessCategory" /></th>
<td>${f:h(businessCategory)}<la:hidden property="businessCategory" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_registeredAddress" /></th>
<td>${f:h(registeredAddress)}<la:hidden property="registeredAddress" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_displayName" /></th>
<td>${f:h(displayName)}<la:hidden property="displayName" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_preferredLanguage" /></th>
<td>${f:h(preferredLanguage)}<la:hidden property="preferredLanguage" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_departmentNumber" /></th>
<td>${f:h(departmentNumber)}<la:hidden property="departmentNumber" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_uidNumber" /></th>
<td>${f:h(uidNumber)}<la:hidden property="uidNumber" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_gidNumber" /></th>
<td>${f:h(gidNumber)}<la:hidden property="gidNumber" /></td>
</tr>
<tr>
<th class="col-xs-2"><la:message key="labels.user_homeDirectory" /></th>
<td>${f:h(homeDirectory)}<la:hidden property="homeDirectory" /></td>
</tr>
<tr>
<th><la:message key="labels.roles" /></th>
<td><c:forEach var="rt" varStatus="s"

View file

@ -97,6 +97,270 @@
<la:text property="mail" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="employeeNumber" class="col-sm-3 control-label"><la:message
key="labels.user_employeeNumber" /></label>
<div class="col-sm-9">
<la:errors property="employeeNumber" />
<la:text property="employeeNumber" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="telephoneNumber" class="col-sm-3 control-label"><la:message
key="labels.user_telephoneNumber" /></label>
<div class="col-sm-9">
<la:errors property="telephoneNumber" />
<la:text property="telephoneNumber" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="homePhone" class="col-sm-3 control-label"><la:message
key="labels.user_homePhone" /></label>
<div class="col-sm-9">
<la:errors property="homePhone" />
<la:text property="homePhone" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="homePostalAddress" class="col-sm-3 control-label"><la:message
key="labels.user_homePostalAddress" /></label>
<div class="col-sm-9">
<la:errors property="homePostalAddress" />
<la:text property="homePostalAddress" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="labeledURI" class="col-sm-3 control-label"><la:message
key="labels.user_labeledURI" /></label>
<div class="col-sm-9">
<la:errors property="labeledURI" />
<la:text property="labeledURI" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="roomNumber" class="col-sm-3 control-label"><la:message
key="labels.user_roomNumber" /></label>
<div class="col-sm-9">
<la:errors property="roomNumber" />
<la:text property="roomNumber" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="description" class="col-sm-3 control-label"><la:message
key="labels.user_description" /></label>
<div class="col-sm-9">
<la:errors property="description" />
<la:text property="description" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="title" class="col-sm-3 control-label"><la:message
key="labels.user_title" /></label>
<div class="col-sm-9">
<la:errors property="title" />
<la:text property="title" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="pager" class="col-sm-3 control-label"><la:message
key="labels.user_pager" /></label>
<div class="col-sm-9">
<la:errors property="pager" />
<la:text property="pager" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="street" class="col-sm-3 control-label"><la:message
key="labels.user_street" /></label>
<div class="col-sm-9">
<la:errors property="street" />
<la:text property="street" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="postalCode" class="col-sm-3 control-label"><la:message
key="labels.user_postalCode" /></label>
<div class="col-sm-9">
<la:errors property="postalCode" />
<la:text property="postalCode" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="physicalDeliveryOfficeName" class="col-sm-3 control-label"><la:message
key="labels.user_physicalDeliveryOfficeName" /></label>
<div class="col-sm-9">
<la:errors property="physicalDeliveryOfficeName" />
<la:text property="physicalDeliveryOfficeName" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="destinationIndicator" class="col-sm-3 control-label"><la:message
key="labels.user_destinationIndicator" /></label>
<div class="col-sm-9">
<la:errors property="destinationIndicator" />
<la:text property="destinationIndicator" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="internationaliSDNNumber" class="col-sm-3 control-label"><la:message
key="labels.user_internationaliSDNNumber" /></label>
<div class="col-sm-9">
<la:errors property="internationaliSDNNumber" />
<la:text property="internationaliSDNNumber" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="state" class="col-sm-3 control-label"><la:message
key="labels.user_state" /></label>
<div class="col-sm-9">
<la:errors property="state" />
<la:text property="state" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="employeeType" class="col-sm-3 control-label"><la:message
key="labels.user_employeeType" /></label>
<div class="col-sm-9">
<la:errors property="employeeType" />
<la:text property="employeeType" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="facsimileTelephoneNumber" class="col-sm-3 control-label"><la:message
key="labels.user_facsimileTelephoneNumber" /></label>
<div class="col-sm-9">
<la:errors property="facsimileTelephoneNumber" />
<la:text property="facsimileTelephoneNumber" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="postOfficeBox" class="col-sm-3 control-label"><la:message
key="labels.user_postOfficeBox" /></label>
<div class="col-sm-9">
<la:errors property="postOfficeBox" />
<la:text property="postOfficeBox" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="initials" class="col-sm-3 control-label"><la:message
key="labels.user_initials" /></label>
<div class="col-sm-9">
<la:errors property="initials" />
<la:text property="initials" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="carLicense" class="col-sm-3 control-label"><la:message
key="labels.user_carLicense" /></label>
<div class="col-sm-9">
<la:errors property="carLicense" />
<la:text property="carLicense" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="mobile" class="col-sm-3 control-label"><la:message
key="labels.user_mobile" /></label>
<div class="col-sm-9">
<la:errors property="mobile" />
<la:text property="mobile" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="postalAddress" class="col-sm-3 control-label"><la:message
key="labels.user_postalAddress" /></label>
<div class="col-sm-9">
<la:errors property="postalAddress" />
<la:text property="postalAddress" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="city" class="col-sm-3 control-label"><la:message
key="labels.user_city" /></label>
<div class="col-sm-9">
<la:errors property="city" />
<la:text property="city" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="teletexTerminalIdentifier" class="col-sm-3 control-label"><la:message
key="labels.user_teletexTerminalIdentifier" /></label>
<div class="col-sm-9">
<la:errors property="teletexTerminalIdentifier" />
<la:text property="teletexTerminalIdentifier" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="x121Address" class="col-sm-3 control-label"><la:message
key="labels.user_x121Address" /></label>
<div class="col-sm-9">
<la:errors property="x121Address" />
<la:text property="x121Address" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="businessCategory" class="col-sm-3 control-label"><la:message
key="labels.user_businessCategory" /></label>
<div class="col-sm-9">
<la:errors property="businessCategory" />
<la:text property="businessCategory" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="registeredAddress" class="col-sm-3 control-label"><la:message
key="labels.user_registeredAddress" /></label>
<div class="col-sm-9">
<la:errors property="registeredAddress" />
<la:text property="registeredAddress" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="displayName" class="col-sm-3 control-label"><la:message
key="labels.user_displayName" /></label>
<div class="col-sm-9">
<la:errors property="displayName" />
<la:text property="displayName" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="preferredLanguage" class="col-sm-3 control-label"><la:message
key="labels.user_preferredLanguage" /></label>
<div class="col-sm-9">
<la:errors property="preferredLanguage" />
<la:text property="preferredLanguage" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="departmentNumber" class="col-sm-3 control-label"><la:message
key="labels.user_departmentNumber" /></label>
<div class="col-sm-9">
<la:errors property="departmentNumber" />
<la:text property="departmentNumber" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="uidNumber" class="col-sm-3 control-label"><la:message
key="labels.user_uidNumber" /></label>
<div class="col-sm-9">
<la:errors property="uidNumber" />
<la:text property="uidNumber" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="gidNumber" class="col-sm-3 control-label"><la:message
key="labels.user_gidNumber" /></label>
<div class="col-sm-9">
<la:errors property="gidNumber" />
<la:text property="gidNumber" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="homeDirectory" class="col-sm-3 control-label"><la:message
key="labels.user_homeDirectory" /></label>
<div class="col-sm-9">
<la:errors property="homeDirectory" />
<la:text property="homeDirectory" styleClass="form-control" />
</div>
</div>
<div class="form-group">
<label for="roles" class="col-sm-3 control-label"><la:message
key="labels.roles" /></label>