From 5653a09b5dabc6331411aab0cef50af4444721a8 Mon Sep 17 00:00:00 2001 From: Alexander Bartsch Date: Fri, 19 Jun 2020 23:49:13 +0200 Subject: [PATCH] Make ldap avatar source field customizable (#12958) --- app/ldap/server/settings.js | 1 + app/ldap/server/sync.js | 5 ++++- packages/rocketchat-i18n/i18n/de-AT.i18n.json | 4 +++- packages/rocketchat-i18n/i18n/de-IN.i18n.json | 6 ++++-- packages/rocketchat-i18n/i18n/de.i18n.json | 4 +++- packages/rocketchat-i18n/i18n/en.i18n.json | 2 ++ 6 files changed, 17 insertions(+), 5 deletions(-) diff --git a/app/ldap/server/settings.js b/app/ldap/server/settings.js index c07c0e1e7fb0..495b72dc1b29 100644 --- a/app/ldap/server/settings.js +++ b/app/ldap/server/settings.js @@ -117,6 +117,7 @@ settings.addGroup('LDAP', function() { this.add('LDAP_Sync_User_Data_Groups_Enforce_AutoChannels', false, { type: 'boolean', enableQuery: syncGroupsChannelsQuery }); this.add('LDAP_Sync_User_Avatar', true, { type: 'boolean', enableQuery }); + this.add('LDAP_Avatar_Field', '', { type: 'string', enableQuery }); this.add('LDAP_Background_Sync', false, { type: 'boolean', enableQuery }); this.add('LDAP_Background_Sync_Interval', 'Every 24 hours', { type: 'string', enableQuery: backgroundSyncQuery }); diff --git a/app/ldap/server/sync.js b/app/ldap/server/sync.js index a2e6a24eb9a7..607db49b61c5 100644 --- a/app/ldap/server/sync.js +++ b/app/ldap/server/sync.js @@ -394,8 +394,11 @@ export function syncUserData(user, ldapUser, ldap) { } } + const avatarField = (settings.get('LDAP_Avatar_Field') || 'thumbnailPhoto').trim(); + if (user && user._id && settings.get('LDAP_Sync_User_Avatar') === true) { - const avatar = ldapUser._raw.thumbnailPhoto || ldapUser._raw.jpegPhoto; + const avatar = ldapUser._raw[avatarField] || ldapUser._raw.thumbnailPhoto || ldapUser._raw.jpegPhoto; + if (avatar) { logger.info('Syncing user avatar'); diff --git a/packages/rocketchat-i18n/i18n/de-AT.i18n.json b/packages/rocketchat-i18n/i18n/de-AT.i18n.json index 0db2ae08e4a1..a7594ce85834 100644 --- a/packages/rocketchat-i18n/i18n/de-AT.i18n.json +++ b/packages/rocketchat-i18n/i18n/de-AT.i18n.json @@ -1601,6 +1601,8 @@ "LDAP_User_Search_Scope": "Umfang", "LDAP_Username_Field": "Nutzernamenfeld", "LDAP_Username_Field_Description": "Geben Sie an, welches Feld als *Nutzername* für neue Benutzer verwendet werden soll. Lassen Sie das Feld leer, um den Nutzernamen zu verwenden, der auf der Anmeldeseite verwendet wird.
Es können auch Template-Tags wie `#{givenNamen}.#{sn}` verwendet werden.
Der Standardwert ist `sAMAccountName`.", + "LDAP_Avatar_Field": "Feld für das Benutzer Avatar", + "LDAP_Avatar_Field_Description": "Geben Sie an, welches Feld als *Benutzer Avatar* verwendet werden soll. Lassen Sie das Feld leer um das Feld `thumbnailPhoto` als primäres und `jpegPhoto` als alternatives Feld zu verwenden.", "Lead_capture_email_regex": "Lead Capture E-Mail Regex", "Lead_capture_phone_regex": "Lead Capture Telefon Regex", "leave-c": "Kanäle verlassen", @@ -2847,4 +2849,4 @@ "Your_push_was_sent_to_s_devices": "Die Push-Nachricht wurde an %s Geräte gesendet.", "Your_server_link": "Ihre Serververbindung", "Your_workspace_is_ready": "Ihr Arbeitsbereich ist einsatzbereit 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/de-IN.i18n.json b/packages/rocketchat-i18n/i18n/de-IN.i18n.json index 2e1afe1f6b2e..12e4a13f8640 100644 --- a/packages/rocketchat-i18n/i18n/de-IN.i18n.json +++ b/packages/rocketchat-i18n/i18n/de-IN.i18n.json @@ -1833,7 +1833,9 @@ "LDAP_User_Search_Filter_Description": "Wenn angegeben, wird nur Benutzern, die dem Filter entsprechen, erlaubt, sich anzumelden. Wenn kein Filter angegeben ist, werden sich alle Benutzer in dem Bereich der angegebenen Domainbasis anmelden können.
Ein Beispiel für Active-Directory: `memberOf=cn=ROCKET_CHAT,ou=General Groups`
Ein Beispiel für OpenLDAP (erweiterbare Übereinstimmungssuche): `ou:dn:=ROCKET_CHAT`", "LDAP_User_Search_Scope": "Scope", "LDAP_Username_Field": "Feld für den Benutzernamen", - "LDAP_Username_Field_Description": "Gib an, welches Feld als *Benutzername* für neue Benutzer verwendet werden soll. Lass das Feld leer, um den Nutzernamen zu verwenden, der auf der Anmeldeseite verwendet wird.
Es können auch Template-Tags wie `#{givenNamen}.#{sn}` verwendet werden.
Der Standardwert ist `sAMAccountName`.", + "LDAP": "LDAP", + "LDAP_Avatar_Field": "Feld für das Benutzer Avatar", + "LDAP_Username_Field_Description": "Gib an, welches Feld als *Benutzername* für neue Benutzer verwendet werden soll. Lass das Feld leer, um den Nutzernamen zu verwenden, der auf der Anmeldeseite verwendet wird.
Es können auch Template-Tags wie `#{givenName}.#{sn}` verwendet werden.
Der Standardwert ist `sAMAccountName`.", "Lead_capture_email_regex": "Lead Capture E-Mail Regex", "Lead_capture_phone_regex": "Lead Capture Telefon Regex", "leave-c": "Kanäle verlassen", @@ -3244,4 +3246,4 @@ "Your_question": "Deine Frage", "Your_server_link": "Dein Server-Link", "Your_workspace_is_ready": "Dein Arbeitsbereich ist einsatzbereit 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/de.i18n.json b/packages/rocketchat-i18n/i18n/de.i18n.json index ce2bcb708617..10a1f603f446 100644 --- a/packages/rocketchat-i18n/i18n/de.i18n.json +++ b/packages/rocketchat-i18n/i18n/de.i18n.json @@ -2007,6 +2007,8 @@ "LDAP_User_Search_Scope": "Scope", "LDAP_Username_Field": "Feld für den Benutzernamen", "LDAP_Username_Field_Description": "Geben Sie an, welches Feld als *Benutzername* für neue Benutzer verwendet werden soll. Lassen Sie das Feld leer, um den Nutzernamen zu verwenden, der auf der Anmeldeseite verwendet wird.
Es können auch Template-Tags wie `#{givenName}.#{sn}` verwendet werden.
Der Standardwert ist `sAMAccountName`.", + "LDAP_Avatar_Field": "Feld für das Benutzer Avatar", + "LDAP_Avatar_Field_Description": "Geben Sie an, welches Feld als *Benutzer Avatar* verwendet werden soll. Lassen Sie das Feld leer um das Feld `thumbnailPhoto` als primäres und `jpegPhoto` als alternatives Feld zu verwenden.", "Lead_capture_email_regex": "Lead Capture E-Mail Regex", "Lead_capture_phone_regex": "Lead Capture Telefon Regex", "leave-c": "Kanäle verlassen", @@ -3559,4 +3561,4 @@ "Your_server_link": "Ihre Serververbindung", "Your_temporary_password_is_password": "Ihr temporäres Passwort lautet [password].", "Your_workspace_is_ready": "Ihr Arbeitsbereich ist einsatzbereit 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index e570c31f819b..014631852a7f 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -2174,6 +2174,8 @@ "LDAP_User_Search_Scope": "Scope", "LDAP_Username_Field": "Username Field", "LDAP_Username_Field_Description": "Which field will be used as *username* for new users. Leave empty to use the username informed on login page.
You can use template tags too, like `#{givenName}.#{sn}`.
Default value is `sAMAccountName`.", + "LDAP_Avatar_Field": "User Avatar Field", + "LDAP_Avatar_Field_Description": " Which field will be used as *avatar* for users. Leave empty to use `thumbnailPhoto` first and `jpegPhoto` as fallback.", "Lead_capture_email_regex": "Lead capture email regex", "Lead_capture_phone_regex": "Lead capture phone regex", "leave-c": "Leave Channels",