Ignore:
Timestamp:
05/12/09 16:40:07 (15 years ago)
Author:
nanardon
Message:
  • allow to set memberUID everywhere
File:
1 edited

Legend:

Unmodified
Added
Removed
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ad/Group.pm

    r91 r92  
    3939sub _key_attr { 'cn' }  
    4040 
     41sub _delayed_fields { 
     42    my ($self)= @_; 
     43    return qw(memberUID member); 
     44} 
     45 
    4146sub _canonical_fields { 
    4247    my ($self, $base, $mode) = @_; 
    4348    ( 
    44         qw(gidNumber description sAMAccountName member), 
     49        qw(gidNumber description sAMAccountName member memberUID), 
    4550        ($mode !~ /w/ 
    4651            ? qw(cn dn) 
     
    8489            }, 
    8590        ); 
     91        sort(@res); 
    8692        return \@res 
     93    }; 
     94    $field eq 'memberUID' and do { 
     95        my $val = $self->SUPER::get_field($field); 
     96        return ref $val ? $val : [ grep { $_ } $val ]; 
    8797    }; 
    8898    $self->SUPER::get_field($field); 
     
    93103    my %ndata; 
    94104    while (my ($f, $val) = each(%data)) { 
     105        $f eq 'memberUID' and do { 
     106            my %users; 
     107            $users{$_}{e} = 1 foreach (@{ $self->get_field('memberUID') || []}); 
     108            $users{$_}{n} = 1 foreach (@{ $val || []}); 
     109            foreach (keys %users) { 
     110                $users{$_}{e} && $users{$_}{n} and next; 
     111                my $user = $self->base->get_object('user', $_) or next; 
     112                if ($users{$_}{e}) { 
     113                    $self->{entry}->del(memberUID => $_); 
     114                } elsif ($users{$_}{n}) { 
     115                    $self->{entry}->add(memberUID => $_); 
     116                } # else {} # can't happen 
     117                my $mesg = $self->{entry}->update($self->base->ldap); 
     118                if ($mesg->code) { 
     119                    warn $mesg->error; 
     120                } 
     121            } 
     122            next; 
     123        }; 
    95124        $f eq 'member' and do { 
    96125            my %users; 
Note: See TracChangeset for help on using the changeset viewer.