From 12158467554ea4e178173eb533231489cf6a186a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Tue, 21 Mar 2017 15:45:08 +0100
Subject: [PATCH] Fixes #5425 Added password recovery login attribute to
 configuration

---
 contrib/openldap/core-fd-conf.schema    | 8 +++++++-
 html/class_passwordRecovery.inc         | 2 ++
 plugins/config/class_recoveryConfig.inc | 5 +++++
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/contrib/openldap/core-fd-conf.schema b/contrib/openldap/core-fd-conf.schema
index fa23ae862..4fbed2ffd 100644
--- a/contrib/openldap/core-fd-conf.schema
+++ b/contrib/openldap/core-fd-conf.schema
@@ -517,6 +517,12 @@ attributetype ( 1.3.6.1.4.1.38414.8.110.9 NAME 'fdPasswordRecoveryUseAlternate'
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
   SINGLE-VALUE )
 
+attributetype ( 1.3.6.1.4.1.38414.8.110.10 NAME 'fdPasswordRecoveryLoginAttribute'
+  DESC 'Fusion Directory - Password recovery login attribute (usually uid)'
+  EQUALITY caseExactIA5Match
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+  SINGLE-VALUE )
+
 
 # Object Class
 objectclass ( 1.3.6.1.4.1.38414.8.2.1 NAME 'fusionDirectoryConf'
@@ -562,7 +568,7 @@ objectclass ( 1.3.6.1.4.1.38414.8.2.3 NAME 'fdPasswordRecoveryConf'
     fdPasswordRecoveryMailSubject   $ fdPasswordRecoveryMailBody  $
     fdPasswordRecoveryMail2Subject  $ fdPasswordRecoveryMail2Body $
     fdPasswordRecoveryValidity      $ fdPasswordRecoverySalt      $
-    fdPasswordRecoveryUseAlternate
+    fdPasswordRecoveryUseAlternate  $ fdPasswordRecoveryLoginAttribute
   ) )
 
 # Dashboard Object Class
diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index 013f21021..92ff66ffd 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -374,6 +374,8 @@ class passwordRecovery extends standAlonePage {
 
     $this->usealternates  = $config->get_cfg_value('passwordRecoveryUseAlternate');
 
+    $this->loginAttribute = $config->get_cfg_value('passwordRecoveryLoginAttribute', 'uid');
+
     @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $config->get_cfg_value('passwordRecoveryActivated'), "passwordRecoveryActivated");
     return ($config->get_cfg_value('passwordRecoveryActivated') == "TRUE");
   }
diff --git a/plugins/config/class_recoveryConfig.inc b/plugins/config/class_recoveryConfig.inc
index 59f503dce..6f0ed6221 100644
--- a/plugins/config/class_recoveryConfig.inc
+++ b/plugins/config/class_recoveryConfig.inc
@@ -74,6 +74,11 @@ class recoveryConfig extends simplePlugin
             'fdPasswordRecoveryUseAlternate',
             FALSE
           ),
+          new StringAttribute (
+            _('Login attribute'), _('Usually uid, but you can use something else for instance in case of SSO'),
+            'fdPasswordRecoveryLoginAttribute', TRUE,
+            'uid'
+          ),
         )
       ),
       'first_email' => array (
-- 
GitLab