From 405b6efbbf911aeb884ffe3c2d49b52b96bb6077 Mon Sep 17 00:00:00 2001
From: lxa4096 <lxa4096@tutamail.com>
Date: Wed, 24 Jul 2024 11:47:23 +0200
Subject: [PATCH] LDAP: Fix get_value on undefined value for external_entry

I do not know, in which cases the external_entry is specified by RT and in
which not.
The logs show this error occurred since 01.07.2024

Taken from the documentation:
https://github.com/bestpractical/rt/blob/rt-4.4.6/lib/RT/Authen/ExternalAuth.pm#L261
"The subroutine is called in 2 modes: when called with external_entry
specified, it should return value or list of values, otherwise, it should
return the external field list it depends on, so RT could retrieve them at the
beginning."
"E.g.

    YYY => sub {
        my %args = @_;

        return 'XXX' unless $args{external_entry};

        my @values = grep defined && length, $args{external_entry}->get_value('XXX');
        return @values;
    },"
---
 request-tracker/templates/RT_SiteConfig.d/70-ldap.pm.j2 | 3 +++
 1 file changed, 3 insertions(+)

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 c6e4d0c..464f046 100644
--- a/request-tracker/templates/RT_SiteConfig.d/70-ldap.pm.j2
+++ b/request-tracker/templates/RT_SiteConfig.d/70-ldap.pm.j2
@@ -50,6 +50,9 @@ Set($ExternalSettings, {
                         'RealName' => sub {
 				use Encode qw(decode);
 				my %args = @_;
+
+        return 'displayName' unless $args{'external_entry'};
+
 				my @values = grep defined && length,
 					$args{'external_entry'}->get_value('displayName');
 				foreach my $v (@values) {
-- 
GitLab