acl.pm
branchfoerste
changeset 66 a41fd3429d63
parent 64 6a6c18cddf46
child 67 deadc72b7e6c
equal deleted inserted replaced
65:f1a66928471f 66:a41fd3429d63
   219 
   219 
   220 sub list_groups(@) {
   220 sub list_groups(@) {
   221 
   221 
   222     @_ = ('*') unless @_;
   222     @_ = ('*') unless @_;
   223     my @ag = split ',', $Cf->imap_aclgroups;
   223     my @ag = split ',', $Cf->imap_aclgroups;
       
   224     my $ag_all = 1 if '*' ~~ @ag;
   224     my $ag_att = AT_ACLGROUPS;
   225     my $ag_att = AT_ACLGROUPS;
   225     my $filter =
   226     my $filter =
   226       "(&($ag_att=*)" . "(|" . join( "", map { "(uid=$_)" } @_ ) . "))";
   227       "(&($ag_att=*)" . "(|" . join( "", map { "(uid=$_)" } @_ ) . "))";
   227     my $r = $ldap->search(
   228     my $r = $ldap->search(
   228         attrs  => [ 'uid', AT_ACLGROUPS ],
   229         attrs  => [ 'uid', AT_ACLGROUPS ],
   238 
   239 
   239     my $users;
   240     my $users;
   240     while ( my $e = ( $r->shift_entry ) ) {
   241     while ( my $e = ( $r->shift_entry ) ) {
   241         my $uid = $e->get_value('uid');
   242         my $uid = $e->get_value('uid');
   242         my @ag_cur = split ',', $e->get_value($ag_att);
   243         my @ag_cur = split ',', $e->get_value($ag_att);
   243         for (@ag) {
   244         for (@ag_cur) {
   244             $users->{$_} =
   245             $users->{$_} =
   245               defined $users->{$_}
   246               defined $users->{$_}
   246               ? [ @{ $users->{$_} }, $uid ]
   247               ? [ @{ $users->{$_} }, $uid ]
   247               : [$uid]
   248               : [$uid]
   248               if $_ ~~ @ag_cur;
   249               if $ag_all or $_ ~~ @ag;
   249         }
   250         }
   250     }
   251     }
   251 
   252 
   252     print "$_:\n\t", join( "\n\t", @{ $users->{$_} } ), "\n\n"
   253     print "$_:\n\t", join( "\n\t", @{ $users->{$_} } ), "\n\n"
   253       for keys %{$users};
   254       for keys %{$users};