Changeset 851


Ignore:
Timestamp:
04/04/10 03:41:53 (14 years ago)
Author:
nanardon
Message:
  • add primary subcommand to user/group()
File:
1 edited

Legend:

Unmodified
Added
Removed
  • LATMOS-Accounts/lib/LATMOS/Accounts/Cli.pm

    r850 r851  
    325325    if (lc($otype) eq 'user') { 
    326326        $objenv->add_func('group', { 
    327             help => 'group add|remove goupname', 
     327            help => 'group add|remove|primary goupname', 
    328328            code => sub { 
    329329                my ($env, $action, @groups) = @_; 
    330330                foreach my $obj (@{$env->{_objects}}) { 
    331                     my %gr; 
    332                     foreach ($obj->get_attributes('memberOf')) { 
    333                         $gr{$_} = 1; 
     331                    if ($action eq 'primary') { 
     332                        my $gid = $groups[0]; 
     333                        if ($gid !~ /^\d/) { 
     334                            my $gobj = $env->base->get_object('group', $gid) or 
     335                            do { 
     336                                print $OUT "Cannot find group $gid"; 
     337                                return; 
     338                            }; 
     339                            $gid = $gobj->get_attributes('gidNumber'); 
     340                        } 
     341                        $obj->set_c_fields('gidNumber', $gid); 
     342                    } else { 
     343                        my %gr; 
     344                        foreach ($obj->get_attributes('memberOf')) { 
     345                            $gr{$_} = 1; 
     346                        } 
     347                        if ($action eq 'add') { 
     348                            $gr{$_} = 1 foreach(@groups); 
     349                        } elsif ($action eq 'remove') { 
     350                            delete($gr{$_}) foreach(@groups); 
     351                        } else { 
     352                            print $OUT 'invalid action'; 
     353                            return; 
     354                        } 
     355                        defined $obj->set_c_fields('memberOf' => [ keys %gr ]) or do { 
     356                            print $OUT "cannot set memberOf attributes for " . 
     357                            $obj->id; 
     358                            return; 
     359                        }; 
    334360                    } 
    335                     if ($action eq 'add') { 
    336                         $gr{$_} = 1 foreach(@groups); 
    337                     } elsif ($action eq 'remove') { 
    338                         delete($gr{$_}) foreach(@groups); 
    339                     } else { 
    340                         print $OUT 'invalid action'; 
    341                         return; 
    342                     } 
    343                     defined $obj->set_c_fields('memberOf' => [ keys %gr ]) or do { 
    344                         print $OUT "cannot set memberOf attributes for " . 
    345                         $obj->id; 
    346                         return; 
    347                     }; 
    348361                } 
    349362                $env->base->commit; 
     
    351364            completion => sub { 
    352365                if (!$_[2]) { 
    353                     return (qw(add remove)); 
     366                    return (qw(add remove primary)); 
    354367                } else { 
    355368                    return $_[0]->base->search_objects('group'); 
Note: See TracChangeset for help on using the changeset viewer.