Add support for groups

pull/211/head
Aleksander Machniak 10 years ago
parent f25c01464f
commit ec2733f6c3

@ -112,6 +112,20 @@ class acl extends rcube_plugin
$keys[] = $display ?: $user['name']; $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)) { if (count($users)) {
@ -448,9 +462,13 @@ class acl extends rcube_plugin
$result = 0; $result = 0;
foreach ($users as $user) { 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); $username = $this->gettext($user);
} }
else if (!empty($user)) { else if (!empty($user)) {

@ -16,10 +16,15 @@ $config['acl_users_field'] = 'mail';
// The LDAP search filter will be &'d with search queries // The LDAP search filter will be &'d with search queries
$config['acl_users_filter'] = ''; $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; // Include the following 'special' access control subjects in the ACL dialog;
// Defaults to array('anyone', 'anonymous') (not when set to an empty array) // Defaults to array('anyone', 'anonymous') (not when set to an empty array)
// Example: array('anyone') to exclude 'anonymous'. // Example: array('anyone') to exclude 'anonymous'.
// Set to an empty array to exclude all special aci subjects. // Set to an empty array to exclude all special aci subjects.
$config['acl_specials'] = array('anyone', 'anonymous'); $config['acl_specials'] = array('anyone', 'anonymous');
?>

Loading…
Cancel
Save