From fa034c2303708900785fa74083abdf9b941f78d0 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Fri, 27 Oct 2017 18:02:07 -0200 Subject: [PATCH] [FIX] LDAP not respecting UTF8 characters & Sync Interval not working --- packages/rocketchat-ldap/server/ldap.js | 18 +++++++++++++----- packages/rocketchat-ldap/server/sync.js | 11 ++++++----- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/packages/rocketchat-ldap/server/ldap.js b/packages/rocketchat-ldap/server/ldap.js index dee24df094a5..5c9bfe25bb68 100644 --- a/packages/rocketchat-ldap/server/ldap.js +++ b/packages/rocketchat-ldap/server/ldap.js @@ -349,11 +349,19 @@ export default class LDAP { } extractLdapEntryData(entry) { - const values = entry.raw; - Object.keys(values).forEach((key) => { - const value = values[key]; - if (!['thumbnailPhoto', 'jpegPhoto'].includes(key) && value instanceof Buffer) { - values[key] = value.toString('binary'); + const values = { + _raw: entry.raw + }; + + Object.keys(values._raw).forEach((key) => { + const value = values._raw[key]; + + if (!['thumbnailPhoto', 'jpegPhoto'].includes(key)) { + if (value instanceof Buffer) { + values[key] = value.toString(); + } else { + values[key] = value; + } } }); diff --git a/packages/rocketchat-ldap/server/sync.js b/packages/rocketchat-ldap/server/sync.js index 1245403dad70..8abf47353b54 100644 --- a/packages/rocketchat-ldap/server/sync.js +++ b/packages/rocketchat-ldap/server/sync.js @@ -47,12 +47,12 @@ export function getLdapUserUniqueID(ldapUser) { if (Unique_Identifier_Field.length > 0) { Unique_Identifier_Field = Unique_Identifier_Field.find((field) => { - return !_.isEmpty(ldapUser[field]); + return !_.isEmpty(ldapUser._raw[field]); }); if (Unique_Identifier_Field) { Unique_Identifier_Field = { attribute: Unique_Identifier_Field, - value: new Buffer(ldapUser[Unique_Identifier_Field], 'binary').toString('hex') + value: ldapUser._raw[Unique_Identifier_Field].toString('hex') }; } return Unique_Identifier_Field; @@ -151,7 +151,7 @@ export function syncUserData(user, ldapUser) { } if (user && user._id && RocketChat.settings.get('LDAP_Sync_User_Avatar') === true) { - const avatar = ldapUser.thumbnailPhoto || ldapUser.jpegPhoto; + const avatar = ldapUser._raw.thumbnailPhoto || ldapUser._raw.jpegPhoto; if (avatar) { logger.info('Syncing user avatar'); @@ -343,15 +343,16 @@ const addCronJob = _.debounce(Meteor.bindEnvironment(function addCronJobDebounce return; } - if (RocketChat.settings.get('LDAP_Sync_Interval')) { + if (RocketChat.settings.get('LDAP_Background_Sync_Interval')) { logger.info('Enabling LDAP Background Sync'); SyncedCron.add({ name: jobName, - schedule: (parser) => parser.text(RocketChat.settings.get('LDAP_Sync_Interval')), + schedule: (parser) => parser.text(RocketChat.settings.get('LDAP_Background_Sync_Interval')), job() { sync(); } }); + SyncedCron.start(); } }), 500);