Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,10 @@ Ext4.define('OpenLdapSync.panel.LdapSettingsPanel', {
helpPopup: 'This should hold the value that uniquely identifies this record on the LDAP server. Usually this would be the login, but it could also be the distinguishing name or objectId',
itemId: 'uidFieldMapping',
name: 'uidFieldMapping'
},{
displayName: 'IM',
itemId: 'imFieldMapping',
name: 'imFieldMapping'
}];


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ public static class LdapForm {
private String _uidFieldMapping;
private String _firstNameFieldMapping;
private String _lastNameFieldMapping;
private String _imFieldMapping;

private String _userDeleteBehavior;
private String _groupDeleteBehavior;
Expand Down Expand Up @@ -399,6 +400,16 @@ public void setLastNameFieldMapping(String lastNameFieldMapping)
_lastNameFieldMapping = lastNameFieldMapping;
}

public String getImFieldMapping()
{
return _imFieldMapping;
}

public void setImFieldMapping(String imFieldMapping)
{
_imFieldMapping = imFieldMapping;
}

public String getUserInfoChangedBehavior()
{
return _userInfoChangedBehavior;
Expand Down Expand Up @@ -629,6 +640,9 @@ public ApiResponse execute(LdapForm form, BindException errors)
if (form.getLastNameFieldMapping() != null)
props.put(LdapSettings.LASTNAME_FIELD_PROP, form.getLastNameFieldMapping());

if (form.getImFieldMapping() != null)
props.put(LdapSettings.IM_FIELD_PROP, form.getImFieldMapping());

if (form.getEmailFieldMapping() != null)
props.put(LdapSettings.EMAIL_FIELD_PROP, form.getEmailFieldMapping());

Expand Down
14 changes: 14 additions & 0 deletions OpenLdapSync/src/org/labkey/openldapsync/ldap/LdapEntry.java
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,20 @@ public String getUID()
return getAttribute(_settings.getUIDMapping());
}

public String getIM() throws LdapInvalidAttributeValueException
{
try
{
Attribute a = _entry.get(_settings.getIMMapping());
return a == null ? null : a.getString();
}
catch (LdapInvalidAttributeValueException e)
{
//not sure what's best here
}
return null;
}

protected String getAttribute(String alias)
{
try
Expand Down
11 changes: 11 additions & 0 deletions OpenLdapSync/src/org/labkey/openldapsync/ldap/LdapSettings.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ public class LdapSettings
public static final String PHONE_FIELD_PROP = "phoneNumberFieldMapping";
public static final String FIRSTNAME_FIELD_PROP = "firstNameFieldMapping";
public static final String LASTNAME_FIELD_PROP = "lastNameFieldMapping";
public static final String IM_FIELD_PROP = "imFieldMapping";


public static final String LABKEY_EMAIL_PROP = "labkeyAdminEmail";

Expand Down Expand Up @@ -70,6 +72,7 @@ public class LdapSettings
public static final String DEFAULT_LAST_NAME_VAL = "sn";
public static final String DEFAULT_FIRST_NAME_VAL = "givenName";
public static final String DEFAULT_PHONE_VAL = "telephoneNumber";
public static final String DEFAULT_IM_VAL = "im";
public static final String DEFAULT_UID_VAL = "userPrincipalName";
public static final String DEFAULT_USERCLASS_VAL = "user";
public static final String DEFAULT_GROUPCLASS_VAL = "group";
Expand Down Expand Up @@ -183,6 +186,9 @@ else if (key.equals(USE_SSL_PROP) && StringUtils.trimToNull(map.get(key)) != nul
if (isMissingOrEmpty(ret, FIRSTNAME_FIELD_PROP))
ret.put(FIRSTNAME_FIELD_PROP, DEFAULT_FIRST_NAME_VAL);

if (!ret.containsKey(IM_FIELD_PROP))
ret.put(IM_FIELD_PROP, DEFAULT_IM_VAL);

if (isMissingOrEmpty(ret, PHONE_FIELD_PROP))
ret.put(PHONE_FIELD_PROP, DEFAULT_PHONE_VAL);

Expand Down Expand Up @@ -417,6 +423,11 @@ public String getPhoneMapping()
return (String)_settings.get(PHONE_FIELD_PROP);
}

public String getIMMapping()
{
return (String)_settings.get(IM_FIELD_PROP);
}

public String getUIDMapping()
{
return (String)_settings.get(UID_FIELD_PROP);
Expand Down
11 changes: 11 additions & 0 deletions OpenLdapSync/src/org/labkey/openldapsync/ldap/LdapSyncRunner.java
Original file line number Diff line number Diff line change
Expand Up @@ -612,6 +612,10 @@ private User createUser(LdapEntry ldapEntry) throws LdapException
if (phone != null)
newUser.setPhone(phone);

String im = ldapEntry.getIM();
if (im != null)
newUser.setIM(im);

UserManager.updateUser(_settings.getLabKeyAdminUser(), newUser);

return newUser;
Expand Down Expand Up @@ -664,6 +668,13 @@ private void syncUserAttributes(LdapEntry ldapEntry, User existing) throws LdapE
existing.setEmail(email);
}

String im = ldapEntry.getIM();
if (im != null && !im.equals(existing.getIM()))
{
changed = true;
existing.setIM(im);
}

if (changed)
{
log("Updating user settings: " + existing.getEmail());
Expand Down