Changeset 10 for LATMOS-Accounts


Ignore:
Timestamp:
02/28/09 00:59:34 (15 years ago)
Author:
nanardon
Message:
  • Unix: add commit() to save change
Location:
LATMOS-Accounts
Files:
2 edited

Legend:

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

    r5 r10  
    9393            } 
    9494        }, 
    95     ) or return 
     95    ) or return; 
    9696     
    9797    $self->_load_unix_file( 
     
    143143} 
    144144 
     145sub _save_unix_file { 
     146    my ($self, $file, @data) = @_; 
     147    open(my $handle, '>', $file) or return; 
     148    foreach my $line (@data) { 
     149        print $handle join(':', map { defined($_) ? $_ : '' } @$line) . "\n"; 
     150    } 
     151    close($handle); 
     152    return 1; 
     153} 
     154 
     155sub commit { 
     156    my ($self) = @_; 
     157 
     158    $self->_save_unix_file( 
     159        $self->{passwd}, 
     160        map {[ 
     161            $_, 
     162            $self->{users}{$_}{password} || 'x', # No empty pass !! 
     163            $self->{users}{$_}{uid}, 
     164            $self->{users}{$_}{gid}, 
     165            $self->{users}{$_}{gecos}, 
     166            $self->{users}{$_}{home}, 
     167            $self->{users}{$_}{shell}, 
     168        ]} keys %{$self->{users}} 
     169    ) or return; 
     170 
     171    $self->_save_unix_file( 
     172        $self->{group}, 
     173        map {[ 
     174            $_, 
     175            $self->{groups}{$_}{password} || 'x', 
     176            $self->{groups}{$_}{gid}, 
     177            join(',', keys %{$self->{groups}{$_}{users} || {}}),  
     178        ]} keys %{$self->{groups}} 
     179    ) or return; 
     180 
     181    if ($self->{use_shadow}) { 
     182 
     183    $self->_save_unix_file( 
     184        $self->{shadow}, 
     185        map {[ 
     186            $_, 
     187            $self->{users}{$_}{spassword} || 'x', 
     188            $self->{users}{$_}{last_changed}, 
     189            $self->{users}{$_}{before_ch}, 
     190            $self->{users}{$_}{after_ch}, 
     191            $self->{users}{$_}{exp_warn}, 
     192            $self->{users}{$_}{exp_disable}, 
     193            $self->{users}{$_}{disable}, 
     194            $self->{users}{$_}{res}, 
     195        ]} keys %{$self->{users}} 
     196    ) or return; 
     197 
     198 
     199    $self->_save_unix_file( 
     200        $self->{gshadow}, 
     201        map {[ 
     202            $_, 
     203            $self->{groups}{$_}{spassword} || 'x', 
     204            $self->{groups}{$_}{unknown}, 
     205            join(',', keys %{$self->{groups}{$_}{susers} || {}}),  
     206        ]} keys %{$self->{groups}} 
     207    ) or return; 
     208 
     209    } # If use shadow 
     210 
     211    1 
     212} 
     213 
    1452141; 
    146215 
  • LATMOS-Accounts/t/11_bases_unix.t

    r5 r10  
    11use strict; 
    22use warnings; 
    3 use Test::More tests =>  7; 
     3use Test::More tests =>  8; 
    44use File::Temp; 
    55 
     
    2424isa_ok($unixb, 'LATMOS::Accounts::Bases::Unix'); 
    2525 
    26 ok($unixb->load, "Can load unix base"); 
     26ok($unixb->load,   "Can load unix base"); 
     27ok($unixb->commit, "Can save unix base"); 
    2728 
    2829system('rm', '-fr', $dir); 
Note: See TracChangeset for help on using the changeset viewer.