--- a/acl.pm Tue Dec 13 13:39:24 2011 +0100
+++ b/acl.pm Tue Dec 13 14:02:11 2011 +0100
@@ -221,6 +221,7 @@
@_ = ('*') unless @_;
my @ag = split ',', $Cf->imap_aclgroups;
+ my $ag_all = 1 if '*' ~~ @ag;
my $ag_att = AT_ACLGROUPS;
my $filter =
"(&($ag_att=*)" . "(|" . join( "", map { "(uid=$_)" } @_ ) . "))";
@@ -240,12 +241,12 @@
while ( my $e = ( $r->shift_entry ) ) {
my $uid = $e->get_value('uid');
my @ag_cur = split ',', $e->get_value($ag_att);
- for (@ag) {
+ for (@ag_cur) {
$users->{$_} =
defined $users->{$_}
? [ @{ $users->{$_} }, $uid ]
: [$uid]
- if $_ ~~ @ag_cur;
+ if $ag_all or $_ ~~ @ag;
}
}