Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F223152
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
7 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/plugins/new_user_identity/composer.json b/plugins/new_user_identity/composer.json
index 11a0af7cd..a2e9e95dc 100644
--- a/plugins/new_user_identity/composer.json
+++ b/plugins/new_user_identity/composer.json
@@ -1,24 +1,24 @@
{
"name": "roundcube/new_user_identity",
"type": "roundcube-plugin",
"description": "Populates a new user's default identity from LDAP on their first visit.",
"license": "GNU GPLv3+",
- "version": "1.0.7",
+ "version": "1.1",
"authors": [
{
"name": "Aleksander Machniak",
"email": "alec@alec.pl",
"role": "Lead"
}
],
"repositories": [
{
"type": "composer",
"url": "http://plugins.roundcube.net"
}
],
"require": {
"php": ">=5.3.0",
"roundcube/plugin-installer": ">=0.1.3"
}
}
diff --git a/plugins/new_user_identity/new_user_identity.php b/plugins/new_user_identity/new_user_identity.php
index 976472210..f7d60d4fa 100644
--- a/plugins/new_user_identity/new_user_identity.php
+++ b/plugins/new_user_identity/new_user_identity.php
@@ -1,127 +1,133 @@
<?php
/**
* New user identity
*
* Populates a new user's default identity from LDAP on their first visit.
*
* This plugin requires that a working public_ldap directory be configured.
*
* @version @package_version@
* @author Kris Steinhoff
* @license GNU GPLv3+
*/
class new_user_identity extends rcube_plugin
{
public $task = 'login';
private $rc;
private $ldap;
function init()
{
$this->rc = rcmail::get_instance();
$this->add_hook('user_create', array($this, 'lookup_user_name'));
$this->add_hook('login_after', array($this, 'login_after'));
}
function lookup_user_name($args)
{
if ($this->init_ldap($args['host'])) {
$results = $this->ldap->search('*', $args['user'], true);
if (count($results->records) == 1) {
$user_name = is_array($results->records[0]['name']) ? $results->records[0]['name'][0] : $results->records[0]['name'];
$user_email = is_array($results->records[0]['email']) ? $results->records[0]['email'][0] : $results->records[0]['email'];
$args['user_name'] = $user_name;
$args['email_list'] = array();
if (!$args['user_email'] && strpos($user_email, '@')) {
$args['user_email'] = rcube_utils::idn_to_ascii($user_email);
}
foreach (array_keys($results[0]) as $key) {
if (!preg_match('/^email($|:)/', $key)) {
continue;
}
foreach ((array) $results->records[0][$key] as $alias) {
if (strpos($alias, '@')) {
$args['email_list'][] = rcube_utils::idn_to_ascii($alias);
}
}
}
}
}
return $args;
}
function login_after($args)
{
$this->load_config();
if ($this->ldap || !$this->rc->config->get('new_user_identity_onlogin')) {
return $args;
}
- $identities = $this->rc->user->list_identities();
- $ldap_entry = $this->lookup_user_name(array('user' => $this->rc->user->data['username'],
- 'host' => $this->rc->user->data['mail_host']));
-
- foreach ($ldap_entry['email_list'] as $email) {
- foreach($identities as $identity) {
+ $identities = $this->rc->user->list_identities();
+ $ldap_entry = $this->lookup_user_name(array(
+ 'user' => $this->rc->user->data['username'],
+ 'host' => $this->rc->user->data['mail_host'],
+ ));
+
+ foreach ((array) $ldap_entry['email_list'] as $email) {
+ foreach ($identities as $identity) {
if ($identity['email'] == $email ) {
continue 2;
}
}
$plugin = $this->rc->plugins->exec_hook('identity_create', array(
- 'login' => true,
- 'record' => array('user_id' => $this->rc->user->ID, 'standard' => 0,
- 'email' => $email, 'name' => $ldap_entry['user_name']),
+ 'login' => true,
+ 'record' => array(
+ 'user_id' => $this->rc->user->ID,
+ 'standard' => 0,
+ 'email' => $email,
+ 'name' => $ldap_entry['user_name']
+ ),
));
if (!$plugin['abort'] && $plugin['record']['email']) {
$this->rc->user->insert_identity($plugin['record']);
}
}
return $args;
}
private function init_ldap($host)
{
if ($this->ldap) {
return $this->ldap->ready;
}
$this->load_config();
$addressbook = $this->rc->config->get('new_user_identity_addressbook');
$ldap_config = (array)$this->rc->config->get('ldap_public');
$match = $this->rc->config->get('new_user_identity_match');
if (empty($addressbook) || empty($match) || empty($ldap_config[$addressbook])) {
return false;
}
$this->ldap = new new_user_identity_ldap_backend(
$ldap_config[$addressbook],
$this->rc->config->get('ldap_debug'),
$this->rc->config->mail_domain($host),
$match);
return $this->ldap->ready;
}
}
class new_user_identity_ldap_backend extends rcube_ldap
{
function __construct($p, $debug, $mail_domain, $search)
{
parent::__construct($p, $debug, $mail_domain);
$this->prop['search_fields'] = (array)$search;
}
}
diff --git a/plugins/new_user_identity/package.xml b/plugins/new_user_identity/package.xml
index 45a3c4c8d..12409392b 100644
--- a/plugins/new_user_identity/package.xml
+++ b/plugins/new_user_identity/package.xml
@@ -1,49 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" packagerversion="1.9.0" version="2.0" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
http://pear.php.net/dtd/tasks-1.0.xsd
http://pear.php.net/dtd/package-2.0
http://pear.php.net/dtd/package-2.0.xsd">
<name>new_user_identity</name>
<channel>pear.roundcube.net</channel>
<summary>Populates a new user's default identity from LDAP on their first visit.</summary>
<description>
Populates a new user's default identity from LDAP on their first visit.
</description>
<lead>
<name>Aleksander Machniak</name>
<user>alec</user>
<email>alec@alec.pl</email>
<active>yes</active>
</lead>
- <date>2012-08-13</date>
+ <date>2014-10-30</date>
<version>
- <release>1.0.7</release>
+ <release>1.1</release>
<api>1.1</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://www.gnu.org/licenses/gpl.html">GNU GPLv3+</license>
<notes>-</notes>
<contents>
<dir baseinstalldir="/" name="/">
<file name="new_user_identity.php" role="php">
<tasks:replace from="@name@" to="name" type="package-info"/>
<tasks:replace from="@package_version@" to="version" type="package-info"/>
</file>
</dir>
<!-- / -->
</contents>
<dependencies>
<required>
<php>
<min>5.2.1</min>
</php>
<pearinstaller>
<min>1.7.0</min>
</pearinstaller>
</required>
</dependencies>
<phprelease/>
</package>
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Mar 1, 1:59 AM (10 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
165425
Default Alt Text
(7 KB)
Attached To
Mode
R3 roundcubemail
Attached
Detach File
Event Timeline
Log In to Comment