CfgTie
view release on metacpan or search on metacpan
lib/CfgTie/TieUser.pm view on Meta::CPAN
group1 => '-g',
groups => '-G',
id => '-u',
};
my $usermod_opt2 =
{
id => '-o',
};
my $usermod = '/usr/sbin/usermod'; #Hard path to usermod
my $userdel = '/usr/sbin/userdel'; #Hard path to userdel
sub STORE
{
# Changes a setting for the specified user... we basically call usermod
my ($self,$key,$val) = @_;
my $lkey = lc($key);
#Check the delegated stuff
if (exists $self->{delegate}->{$lkey})
{return $self->{delegate}->{$lkey}->STORE($key,$val);}
if ($lkey eq 'groups')
{
#Handle the groups thing...
#$val is a list reference....
my ($i,@g) = @{$val};
CfgTie::filever::system("$usermod $self->{name} -g $i -G ". join(',', @g));
}
elsif (exists $usermod_opt->{$lkey})
{
#This is something for user mod!
my ($FSUp, @FSet)=(0);
if (defined $user'Chg_FS && $user'Chg_FS == 1 && $lkey eq 'id')
{
#We are supposed to change all of the files in the system to
#have the new new one.
#We have a race condition: someone else may change soemthing in
#the file system, so we may not get everything, but we try to
#be reasonable
# Now we need to identify all of the files.. this may take a
# long time
@FSet= &CfgTie::filever'find_by_user ('/', $self->{id});
if (@FSet && scalar @FSet) {$FSUp = 1;}
}
my $X = $usermod_opt2->{$lkey};
if (!defined $X) {$X='';}
#Change the system tables
CfgTie::filever::system("$usermod ".$usermod_opt->{$lkey}." $val $X ".
$self->{name}."\n");
#If bad things should throw exception
if ($FSUp) {chown $val,-1, @FSet;}
$self->{$lkey} = $val;
}
else
{
#Extra setting that will be lost... 8(
$self->{$lkey}=$val;
}
}
sub DELETE
{
#Deletes a user setting
my ($self, $key) = @_;
my $lkey=lc($key);
if ($lkey eq 'authmethod')
{
CfgTie::filever::system("$usermod -A DEFAULT ".$self->{name});
}
elsif (exists $usermod_opt->{$lkey})
{
#This is something for user mod!
CfgTie::filever::system("$usermod ".$usermod_opt->{$lkey}." ".
$self->{name});
}
else
{
#Just remove our local copy
delete $self->{$lkey};
}
}
sub trx {CfgTie::Cfgfile::trx(@_);}
sub HTML($)
{
# A routine to HTMLize the user
my $self=shift;
my %Keys2 = map {$_,1} (keys %{$self});
$Keys2{'last'}=1;
delete $Keys2{gcos};
delete $Keys2{name};
delete $Keys2{id};
delete $Keys2{groupid};
delete $Keys2{password};
my ($G) = getgrgid($self->{groupid});
my $A='';
foreach my $I (sort keys %Keys2) {$A.=trx($I,$self->{$I});}
CfgTie::Cfgfile::table($self->{gcos},
trx("Full Name:", $self->{gcos}).
trx("Login (UID):",$self->{name}." (".$self->{id}.")").
trx("Group (GID):","<a href=\"group/$G\">".$G."</a> (".
$self->{groupid}.")").$A);
}
## --- Support for optional user prioritization --------------------------------
( run in 2.606 seconds using v1.01-cache-2.11-cpan-a49fcb8fa48 )