From dfb926b20ef155b415835515f241e4eed8a01338 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 07 Feb 2013 03:20:36 -0500
Subject: [PATCH] Lowercase username if 'login_lc' is set (#1488943)

---
 plugins/acl/acl.php |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/plugins/acl/acl.php b/plugins/acl/acl.php
index eb8433a..18bac8e 100644
--- a/plugins/acl/acl.php
+++ b/plugins/acl/acl.php
@@ -452,6 +452,9 @@
                 continue;
             }
 
+            $user     = $this->mod_login($user);
+            $username = $this->mod_login($username);
+
             if ($user != $_SESSION['username'] && $username != $_SESSION['username']) {
                 if ($this->rc->storage->set_acl($mbox, $user, $acl)) {
                     $ret = array('id' => rcube_utils::html_identifier($user),
@@ -703,4 +706,23 @@
 
         return $this->ldap->ready;
     }
+
+    /**
+     * Modify user login according to 'login_lc' setting
+     */
+    protected function mod_login($user)
+    {
+        $login_lc = $this->rc->config->get('login_lc');
+
+        if ($login_lc === true || $login_lc == 2) {
+            $user = mb_strtolower($user);
+        }
+        // lowercase domain name
+        else if ($login_lc && strpos($user, '@')) {
+            list($local, $domain) = explode('@', $user);
+            $user = $local . '@' . mb_strtolower($domain);
+        }
+
+        return $user;
+    }
 }

--
Gitblit v1.9.1