From c4240fc40c74d4a03e280f181e46a965d0e10915 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 b3e113fb5..88d151570 100644
--- a/contrib/openldap/core-fd-conf.schema
+++ b/contrib/openldap/core-fd-conf.schema
@@ -580,6 +580,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'
@@ -627,7 +633,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 ac49bff5f..ca9281341 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 d16163f18..9492f5011 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