From 7b865083e71471c2c6f9e039b42e6e8cc4ac5657 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Mon, 24 Aug 2009 15:18:47 -0400
Subject: [PATCH] - Password/LDAP: support %name, %domain in userdn (#1486055)

---
 plugins/password/drivers/ldap.php    |    8 ++++++++
 plugins/password/config.inc.php.dist |    7 +++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/plugins/password/config.inc.php.dist b/plugins/password/config.inc.php.dist
index abe2749..5d0a88b 100644
--- a/plugins/password/config.inc.php.dist
+++ b/plugins/password/config.inc.php.dist
@@ -87,8 +87,11 @@
 $rcmail_config['password_ldap_adminPW'] = null;
 
 // LDAP user DN mask
-// The user's DN is mandatory and as we only have his login, we need to re-create his DN using a mask
-// '%login' will be replace by the current roundcube user's login
+// The user's DN is mandatory and as we only have his login,
+// we need to re-create his DN using a mask
+// '%login' will be replaced by the current roundcube user's login
+// '%name' will be replaced by the current roundcube user's name part
+// '%domain' will be replaced by the current roundcube user's domain part
 // Exemple: 'uid=%login,ou=people,dc=exemple,dc=com'
 $rcmail_config['password_ldap_userDN_mask'] = 'uid=%login,ou=people,dc=exemple,dc=com';
 
diff --git a/plugins/password/drivers/ldap.php b/plugins/password/drivers/ldap.php
index 1087826..e38f13f 100644
--- a/plugins/password/drivers/ldap.php
+++ b/plugins/password/drivers/ldap.php
@@ -21,6 +21,14 @@
     
     // Building user DN
     $userDN = str_replace('%login', $_SESSION['username'], $rcmail->config->get('password_ldap_userDN_mask'));
+    
+    $parts = explode('@', $_SESSION['username']);
+    if (count($parts) == 2)
+    {
+        $userDN = str_replace('%name', $parts[0], $userDN);
+        $userDN = str_replace('%domain', $parts[1], $userDN);
+    }
+
     if (empty($userDN)) {return PASSWORD_CONNECT_ERROR;}
     
     // Connection Method

--
Gitblit v1.9.1