plugins/kolab_auth

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Mon Aug 5 12:15:11 CEST 2013


 plugins/kolab_auth/kolab_auth.php |   26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

New commits:
commit 3d96d742989ef30767b1205bbdb0d3cc9c52117f
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Mon Aug 5 11:14:14 2013 +0100

    Use $ldap->parse_vars to allow role specific settings and plugins to be applied to multi-domain environments through the expansion of '%dc'

diff --git a/plugins/kolab_auth/kolab_auth.php b/plugins/kolab_auth/kolab_auth.php
index 5579743..2b869f7 100644
--- a/plugins/kolab_auth/kolab_auth.php
+++ b/plugins/kolab_auth/kolab_auth.php
@@ -87,6 +87,8 @@ class kolab_auth extends rcube_plugin
         //  Array(
         //      '<role_dn>' => Array('plugin1', 'plugin2'),
         //  );
+        // 
+        // NOTE that <role_dn> may in fact be something like: 'cn=role,%dc'
 
         $role_plugins = $rcmail->config->get('kolab_auth_role_plugins');
 
@@ -101,9 +103,33 @@ class kolab_auth extends rcube_plugin
         //          ),
         //      ),
         //  );
+        //
+        // NOTE that <role_dn> may in fact be something like: 'cn=role,%dc'
 
         $role_settings = $rcmail->config->get('kolab_auth_role_settings');
 
+        $ldap = self::ldap();
+        if (!$ldap || !$ldap->ready) {
+            $args['abort'] = true;
+            return $args;
+        }
+
+        // Find user record in LDAP
+        $record = $ldap->get_user_record($user, $host);
+
+        if (empty($record)) {
+            $args['abort'] = true;
+            return $args;
+        }
+
+        foreach ($role_plugins as $role_dn => $plugins) {
+            $role_plugins[$ldap->parse_vars($role_dn)] => $plugins;
+        }
+
+        foreach ($role_settings as $role_dn => $settings) {
+            $role_settings[$ldap->parse_vars($role_dn)] => $settings;
+        }
+
         foreach ($role_dns as $role_dn) {
             if (isset($role_plugins[$role_dn]) && is_array($role_plugins[$role_dn])) {
                 foreach ($role_plugins[$role_dn] as $plugin) {




More information about the commits mailing list