From f871f94a48c699dcadd977a62ad8970734894961 Mon Sep 17 00:00:00 2001
From: Thomas Schneider <thomas@fsmpi.rwth-aachen.de>
Date: Mon, 23 Mar 2020 14:48:21 +0100
Subject: [PATCH] LDAP: Update changed users and fix UTF-8 name

---
 .../templates/RT_SiteConfig.d/70-ldap.pm.j2        | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/request-tracker/templates/RT_SiteConfig.d/70-ldap.pm.j2 b/request-tracker/templates/RT_SiteConfig.d/70-ldap.pm.j2
index f3170b3..93fdaf3 100644
--- a/request-tracker/templates/RT_SiteConfig.d/70-ldap.pm.j2
+++ b/request-tracker/templates/RT_SiteConfig.d/70-ldap.pm.j2
@@ -4,13 +4,23 @@ Set($LDAPUser,'{{rt_ldapuser}}');
 Set($LDAPPassword,'{{ rt_ldap_password }}');
 Set($LDAPBase,'{{rt_ldapbase}}');
 Set($LDAPFilter, '(&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))');
+Set($LDAPOptions, [raw => qr/(displayName)/]);
+Set($LDAPUpdateUsers, 1);
 Set($LDAPMapping, {Name         => 'sAMAccountName', # required
                    EmailAddress => 'mail',
-                   RealName     => 'displayName',
+                   RealName     => sub {
+		       use Encode qw(decode);
+		       my %args = @_;
+		       my @values = grep defined && length, $args{'ldap_entry'}->get_value('displayName');
+		       foreach my $v (@values) {
+			   $v = decode('UTF-8', $v);
+		       }
+		       return @values;
+                   },
                    WorkPhone    => 'telephoneNumber',
                    Organization => 'departmentName'});
 
-   
+
 # If you want to sync Groups from LDAP into RT
 
 Set($LDAPGroupBase, '{{rt_ldapbase}}');
-- 
GitLab