summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2014-08-11 03:35:07 -0400
committerAleksander Machniak <alec@alec.pl>2014-08-11 03:35:07 -0400
commitec2733f6c35ca3d470172f9e35ae94399a78c2f4 (patch)
tree6a9846666dfb50589927cbe90c8bff2241b67cf0
parentf25c01464f25382fafc5aa1a65ff89129a98b222 (diff)
Add support for groups
-rw-r--r--plugins/acl/acl.php22
-rw-r--r--plugins/acl/config.inc.php.dist9
2 files changed, 27 insertions, 4 deletions
diff --git a/plugins/acl/acl.php b/plugins/acl/acl.php
index 5c4deb770..33bd91e22 100644
--- a/plugins/acl/acl.php
+++ b/plugins/acl/acl.php
@@ -112,6 +112,20 @@ class acl extends rcube_plugin
$keys[] = $display ?: $user['name'];
}
}
+
+ if ($this->rc->config->get('acl_groups')) {
+ $prefix = $this->rc->config->get('acl_group_prefix');
+ $result = $this->ldap->list_groups($search, $mode);
+
+ foreach ($result as $record) {
+ $group = $record['name'];
+
+ if ($group) {
+ $users[] = array('name' => ($prefix ? $prefix : '') . $group, 'display' => $group);
+ $keys[] = $group;
+ }
+ }
+ }
}
if (count($users)) {
@@ -448,9 +462,13 @@ class acl extends rcube_plugin
$result = 0;
foreach ($users as $user) {
- $user = trim($user);
+ $user = trim($user);
+ $prefix = $this->rc->config->get('acl_groups') ? $this->rc->config->get('acl_group_prefix') : '';
- if (!empty($this->specials) && in_array($user, $this->specials)) {
+ if ($prefix && strpos($user, $prefix) === 0) {
+ $username = $user;
+ }
+ else if (!empty($this->specials) && in_array($user, $this->specials)) {
$username = $this->gettext($user);
}
else if (!empty($user)) {
diff --git a/plugins/acl/config.inc.php.dist b/plugins/acl/config.inc.php.dist
index 3f0b1efb6..de1f8b5d2 100644
--- a/plugins/acl/config.inc.php.dist
+++ b/plugins/acl/config.inc.php.dist
@@ -16,10 +16,15 @@ $config['acl_users_field'] = 'mail';
// The LDAP search filter will be &'d with search queries
$config['acl_users_filter'] = '';
+// Enable LDAP groups in user autocompletion.
+// Note: LDAP addressbook defined in acl_users_source must include groups config
+$config['acl_groups'] = false;
+
+// Prefix added to the group name to build IMAP ACL identifier
+$config['acl_group_prefix'] = 'group:';
+
// Include the following 'special' access control subjects in the ACL dialog;
// Defaults to array('anyone', 'anonymous') (not when set to an empty array)
// Example: array('anyone') to exclude 'anonymous'.
// Set to an empty array to exclude all special aci subjects.
$config['acl_specials'] = array('anyone', 'anonymous');
-
-?>