diff --git a/plugins/kolab_auth/config.inc.php.dist b/plugins/kolab_auth/config.inc.php.dist
index d28ff08d..12f43e65 100644
--- a/plugins/kolab_auth/config.inc.php.dist
+++ b/plugins/kolab_auth/config.inc.php.dist
@@ -10,9 +10,11 @@ $rcmail_config['kolab_auth_filter'] = '(&(objectClass=kolabInetOrgPerson)(|(uid=
// Use this fields (from fieldmap configuration) to get authentication ID
$rcmail_config['kolab_auth_login'] = 'email';
-// Use this fields (from fieldmap configuration) for default identity
-$rcmail_config['kolab_auth_name'] = 'name';
-$rcmail_config['kolab_auth_email'] = 'email';
+// Use this fields (from fieldmap configuration) for default identity.
+// Note: These aren't LDAP attributes, but field names in config
+// If the value array contains more than one field, first non-empty will be used
+$rcmail_config['kolab_auth_name'] = array('name', 'cn');
+$rcmail_config['kolab_auth_email'] = array('email');
// Login and password of the admin user. Enables "Login As" feature.
$rcmail_config['kolab_auth_admin_login'] = '';
diff --git a/plugins/kolab_auth/kolab_auth.php b/plugins/kolab_auth/kolab_auth.php
index f993aaf2..c5d89ecb 100644
--- a/plugins/kolab_auth/kolab_auth.php
+++ b/plugins/kolab_auth/kolab_auth.php
@@ -261,6 +261,7 @@ class kolab_auth extends rcube_plugin
$admin_pass = $rcmail->config->get('kolab_auth_admin_password');
$login_attr = $rcmail->config->get('kolab_auth_login');
$name_attr = $rcmail->config->get('kolab_auth_name');
+ $email_attr = $rcmail->config->get('kolab_auth_email');
// get username and host
$host = rcube_parse_host($args['host']);
@@ -357,18 +358,31 @@ class kolab_auth extends rcube_plugin
// Store UID in session for use by other plugins
$_SESSION['kolab_uid'] = is_array($record['uid']) ? $record['uid'][0] : $record['uid'];
- // Set credentials
+ // Set user login
if ($login_attr) {
$this->data['user_login'] = is_array($record[$login_attr]) ? $record[$login_attr][0] : $record[$login_attr];
}
- if ($name_attr) {
- $this->data['user_name'] = is_array($record[$name_attr]) ? $record[$name_attr][0] : $record[$name_attr];
- }
-
if ($this->data['user_login']) {
$args['user'] = $this->data['user_login'];
}
+ // User name for identity (first log in)
+ foreach ((array)$name_attr as $field) {
+ $name = is_array($record[$field]) ? $record[$field][0] : $record[$field];
+ if (!empty($name)) {
+ $this->data['user_name'] = $name;
+ break;
+ }
+ }
+ // User email for identity (first log in)
+ foreach ((array)$email_attr as $field) {
+ $email = is_array($record[$field]) ? $record[$field][0] : $record[$field];
+ if (!empty($email)) {
+ $this->data['user_email'] = $email;
+ break;
+ }
+ }
+
// Log "Login As" usage
if (!empty($origname)) {
write_log('userlogins', sprintf('Admin login for %s by %s from %s',
diff --git a/plugins/kolab_auth/package.xml b/plugins/kolab_auth/package.xml
index 52131031..abbd21f1 100644
--- a/plugins/kolab_auth/package.xml
+++ b/plugins/kolab_auth/package.xml
@@ -18,9 +18,9 @@
machniak@kolabsys.com
yes
- 2012-02-29
+ 2012-10-08
- 0.2
+ 0.3
0.1