Changeset 16


Ignore:
Timestamp:
03/03/09 19:51:40 (15 years ago)
Author:
nanardon
Message:
  • add create object to UNIX base
Location:
LATMOS-Accounts
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LATMOS-Accounts/MANIFEST

    r1 r16  
    11Changes 
     2lib/LATMOS/Accounts.pm 
     3lib/LATMOS/Accounts/Bases.pm 
     4lib/LATMOS/Accounts/Bases/Ad.pm 
     5lib/LATMOS/Accounts/Bases/Dummy.pm 
     6lib/LATMOS/Accounts/Bases/Dummy/User.pm 
     7lib/LATMOS/Accounts/Bases/Objects.pm 
     8lib/LATMOS/Accounts/Bases/Unix.pm 
     9lib/LATMOS/Accounts/Bases/Unix/Group.pm 
     10lib/LATMOS/Accounts/Bases/Unix/User.pm 
    211Makefile.PL 
    312MANIFEST 
    413README 
     14t/10_bases.t 
     15t/11_bases_unix.t 
    516t/LATMOS-Accounts.t 
    6 lib/LATMOS/Accounts.pm 
     17testdata/group 
     18testdata/gshadow 
     19testdata/passwd 
     20testdata/shadow 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases.pm

    r7 r16  
    9191} 
    9292 
     93=head2 create_object($type, $id, %data) 
     94 
     95Create and return an object of type $type with unique id 
     96$id having %data. 
     97 
     98This method should be provided by the data base handler. 
     99 
     100=cut 
     101 
     102sub create_object { 
     103    my ($self, $otype, $id, %data) = @_; 
     104    return; 
     105} 
     106 
     107=head2 create_c_object($type, $id, %data) 
     108 
     109Create and return an object of type $type with unique id 
     110$id having %data using canonical fields 
     111 
     112=cut 
     113 
     114sub create_c_object { 
     115    my ($self, $otype, $id, %cdata) = @_; 
     116 
     117    my %data; 
     118    foreach my $cfield (keys %cdata) { 
     119        my $field = $self->base->get_field_name($self->type, $cfield) or next; 
     120        $data{$field} = $cdata{$cfield}; 
     121    } 
     122    keys %data or return 1; # TODO: return an error ? 
     123    $self->create_object($otype, $id, %data); 
     124} 
     125 
    93126=head2 load 
    94127 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Unix.pm

    r13 r16  
    8383} 
    8484 
    85  
    8685my @password_fields = qw(account password uid gid gecos home shell); 
    8786my @shadow_fields =   qw(account spassword last_changed before_ch after_ch exp_warn exp_disable disable res); 
     
    196195            $self->{users}{$_}{home}, 
    197196            $self->{users}{$_}{shell}, 
    198         ]} keys %{$self->{users}} 
     197        ]} sort { $self->{users}{$a}{uid} <=> $self->{users}{$b}{uid} } keys %{$self->{users}} 
    199198    ) or return; 
    200199 
     
    206205            $self->{groups}{$_}{gid}, 
    207206            join(',', keys %{$self->{groups}{$_}{users} || {}}),  
    208         ]} keys %{$self->{groups}} 
     207        ]} sort {  $self->{groups}{$a}{gid} <=> $self->{groups}{$b}{gid} } keys %{$self->{groups}} 
    209208    ) or return; 
    210209 
     
    223222            $self->{users}{$_}{disable}, 
    224223            $self->{users}{$_}{res}, 
    225         ]} keys %{$self->{users}} 
     224        ]} sort { $self->{users}{$a}{uid} <=> $self->{users}{$b}{uid} } keys %{$self->{users}} 
    226225    ) or return; 
    227226 
     
    234233            $self->{groups}{$_}{unknown}, 
    235234            join(',', keys %{$self->{groups}{$_}{susers} || {}}),  
    236         ]} keys %{$self->{groups}} 
     235        ]} sort {  $self->{groups}{$a}{gid} <=> $self->{groups}{$b}{gid} } keys %{$self->{groups}} 
    237236    ) or return; 
    238237 
     
    240239 
    241240    1 
     241} 
     242 
     243sub create_object { 
     244    my ($self, $otype, $id, %data) = @_; 
     245 
     246    my $internal_obj = { 
     247        user => 'users', 
     248        group => 'groups', 
     249    }->{$otype}; 
     250 
     251    if ($self->{$internal_obj}{$id}) { return }; 
     252    $self->{$internal_obj}{$id} = { account => $id }; 
     253    my $obj = $self->get_object($otype, $id) or return; 
     254    $obj->set_fields(%data); 
     255    $obj 
    242256} 
    243257 
  • LATMOS-Accounts/t/11_bases_unix.t

    r14 r16  
    11use strict; 
    22use warnings; 
    3 use Test::More tests => 20; 
     3use Test::More tests => 21; 
    44use File::Temp; 
    55 
     
    3838ok($user->set_fields(shell => '/bin/tcsh'), "Can set login shell"); 
    3939is($user->get_field('shell'), '/bin/tcsh', 'Can get modified login shell'); 
     40ok($unixb->create_object('user', 'admin', 
     41    uid => 2, gid => 2, 
     42    home => '/home/admin', 
     43    shell => '/bin/sh', 
     44), "Can create a user"); 
    4045 
    4146ok($unixb->commit, "Can save unix base"); 
     
    5156is($user->get_field('shell'), '/bin/tcsh', 'Can get modified login shell'); 
    5257 
    53  
    54 system('rm', '-fr', $dir); 
     58warn $dir 
     59#system('rm', '-fr', $dir); 
Note: See TracChangeset for help on using the changeset viewer.