aboutsummaryrefslogtreecommitdiffstats
path: root/userdrake
diff options
context:
space:
mode:
authorThierry Vignaud <tv@mandriva.org>2010-02-02 08:43:46 +0000
committerThierry Vignaud <tv@mandriva.org>2010-02-02 08:43:46 +0000
commitc0d9470f7a2c338363109840ea6e5db37b6a5e77 (patch)
tree4a5cbfae8edf556527ba8b26d67c7cd58a4d0564 /userdrake
parent01d18959aad4a6ea23f39bc9ea4a61e114cd8f9f (diff)
downloaduserdrake-c0d9470f7a2c338363109840ea6e5db37b6a5e77.tar
userdrake-c0d9470f7a2c338363109840ea6e5db37b6a5e77.tar.gz
userdrake-c0d9470f7a2c338363109840ea6e5db37b6a5e77.tar.bz2
userdrake-c0d9470f7a2c338363109840ea6e5db37b6a5e77.tar.xz
userdrake-c0d9470f7a2c338363109840ea6e5db37b6a5e77.zip
(UserEdit_valid) split it out of Edit()
Diffstat (limited to 'userdrake')
-rwxr-xr-xuserdrake176
1 files changed, 98 insertions, 78 deletions
diff --git a/userdrake b/userdrake
index 33a7955..396b75f 100755
--- a/userdrake
+++ b/userdrake
@@ -748,11 +748,101 @@ sub Xguest() {
RefreshXguest();
}
+sub UserEdit_valid {
+ my ($userEnt, $model, $primgid) = @_;
+ my ($Exp, $gEnt, $ugid);
+ my $error = 0;
+ my %u = (
+ username => $us->{o}{login}->get_text, gecos => $us->{o}{fullname}->get_text,
+ homedir => $us->{o}{homedir}->get_text, pw => $us->{o}{passwd}->get_text,
+ confm => $us->{o}{confpasswd}->get_text, shell => $us->{o}{shells}->entry->get_text
+ );
+ if (!valid_username($u{username})) {
+ RaiseError($us->{error});
+ }
+ if ($u{pw} ne $u{confm}) {
+ RaiseError(N("Password Mismatch"));
+ } elsif ($u{pw} eq $u{confm} && $u{pw} ne ' ') {
+ if ($sec{SECURE_LEVEL} > 3 && length($u{pw}) < 6) {
+ RaiseError(N("This password is too simple. \n Good passwords should be > 6 characters"));
+ }
+ !$error and $ctx->UserSetPass($userEnt, $u{pw});
+ }
+ if (!$error) {
+ $userEnt->UserName($u{username});
+ $userEnt->Gecos($u{gecos});
+ $userEnt->HomeDir($u{homedir});
+ $userEnt->LoginShell($u{shell});
+ my $username = $userEnt->UserName($GetValue);
+ $model->foreach(sub {
+ my ($mod, $_path, $iter) = @_;
+ my $ch = $mod->get($iter, 2);
+ my $name = $mod->get($iter, 1);
+ $gEnt = $ctx->LookupGroupByName($name);
+ $ugid = $gEnt->Gid($GetValue);
+ my $m = $gEnt->MemberName(1,0);
+ if ($ch == 1) {
+ if (!InArray($username, $m) && $primgid != $ugid) {
+ eval { $gEnt->MemberName($username, 1) };
+ $ctx->GroupModify($gEnt);
+ }
+ } else {
+ if (InArray($username, $m)) {
+ eval { $gEnt->MemberName($username, 2) };
+ $ctx->GroupModify($gEnt);
+ }
+ }
+ return 0;
+ }, undef);
+ if ($us->{o}{primgroup}->entry->get_text eq '') {
+ RaiseError(N("Please select at least one group for the user"));
+ } elsif (!$error) {
+ my $ent = $ctx->LookupGroupByName($us->{o}{primgroup}->entry->get_text);
+ $ugid = $ent->Gid($GetValue);
+ $userEnt->Gid($ugid);
+ if ($us->{o}{acheckexpire}->get_active) {
+ my $yr = $us->{o}{expy}->get_value;
+ my $mo = $us->{o}{expm}->get_value;
+ my $dy = $us->{o}{expd}->get_value;
+ ValidInt($yr, $dy, $mo)
+ or RaiseError(N("Please specify Year, Month and Day \n for Account Expiration "));
+ if (!$error) { $Exp = ConvTime($dy, $mo, $yr);
+ $userEnt->ShadowExpire($Exp) }
+ } else { $userEnt->ShadowExpire(ceil(-1)) }
+ if ($us->{o}{pcheckexpire}->get_active) {
+ my $allowed = int($us->{o}{dbca}->get_text);
+ my $required = int($us->{o}{dbcr}->get_text);
+ my $warning = int($us->{o}{bwbc}->get_text);
+ my $inactive = int($us->{o}{dbai}->get_text);
+ $allowed && $required && $warning && $inactive
+ or RaiseError(N("Please fill up all fields in password aging\n"));
+ if (!$error) {
+ $userEnt->ShadowMin($allowed);
+ $userEnt->ShadowMax($required);
+ $userEnt->ShadowWarn($warning);
+ $userEnt->ShadowInact($inactive);
+ }
+ } else {
+ $userEnt->ShadowMin(-1);
+ $userEnt->ShadowMax(99999);
+ $userEnt->ShadowWarn(-1);
+ $userEnt->ShadowInact(-1);
+ }
+ !$error and $ctx->UserModify($userEnt);
+ if ($us->{o}{lockuser}->get_active) {
+ !$ctx->IsLocked($userEnt) and $ctx->Lock($userEnt);
+ } else { $ctx->IsLocked($userEnt) and $ctx->UnLock($userEnt) }
+ defined $us->{o}{iconval} and any::addKdmIcon($u{username}, $us->{o}{iconval});
+ !$error and Refresh($sysfilter, $stringsearch);
+ }
+ }
+}
+
sub Edit() {
my $w = NewWindow(N("Edit Groups / Users"));
my $model = Gtk2::ListStore->new("Gtk2::Gdk::Pixbuf", "Glib::String", "Glib::Int");
- my $tree = Gtk2::TreeView->new_with_model($model); my %g; my %u;
- my ($groupname, $username, $groupEnt, $userEnt, $members, $times, $min, $max, $warn, $inact, $primgid, $Gent);
+ my $tree = Gtk2::TreeView->new_with_model($model); my %g;
+ my ($groupname, $groupEnt, $userEnt, $members, $times, $min, $max, $warn, $inact, $primgid, $Gent);
my @primgroup;
$tree->get_selection->set_mode('browse');
$tree->append_column(my $check = Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::CellRendererPixbuf->new, 'pixbuf' => 0));
@@ -807,7 +897,7 @@ sub Edit() {
1, $us->{o}{primgroup} = Gtk2::OptionMenu->new,
)
), gtkshow(Gtk2::Label->new(N("Groups"))));
- $username = GetNameEntFromIter($usertree, $utree_model,0); $us->{o}{login}->set_text($username);
+ my $username = GetNameEntFromIter($usertree, $utree_model,0); $us->{o}{login}->set_text($username);
$userEnt = $ctx->LookupUserByName($username); FillUserInfo($userEnt);
my $Uid = $userEnt->Uid($GetValue);
my $expire = $userEnt->ShadowExpire($GetValue);
@@ -862,7 +952,7 @@ sub Edit() {
} else { $model->append_set([ 0 => gtkcreate_pixbuf($pix[1]), 1 => $user, 2 => 0 ]) }
}
}
- my ($ch, $name, $uEnt, $gEnt, $ugid, $Exp);
+ my ($uEnt);
gtkpack_($w->vbox,
1, !$p ? $nbU : $nbG);
gtkadd($w->action_area,
@@ -871,77 +961,7 @@ sub Edit() {
gtksignal_connect(Gtk2::Button->new($_->[0]), clicked => sub {
if (!$retv) {
if ($p <= 0) {
- $error = 0;
- %u = (
- username => $us->{o}{login}->get_text, gecos => $us->{o}{fullname}->get_text,
- homedir => $us->{o}{homedir}->get_text, pw => $us->{o}{passwd}->get_text,
- confm => $us->{o}{confpasswd}->get_text, shell => $us->{o}{shells}->entry->get_text
- );
- if (!valid_username($u{username})) { RaiseError($us->{error}) }
- if ($u{pw} ne $u{confm}) {
- RaiseError(N("Password Mismatch"));
- } elsif ($u{pw} eq $u{confm} && $u{pw} ne ' ') {
- if ($sec{SECURE_LEVEL} > 3 && length($u{pw}) < 6) { RaiseError(N("This password is too simple. \n Good passwords should be > 6 characters")) }
- !$error and $ctx->UserSetPass($userEnt, $u{pw});
- }
- if (!$error) {
- $userEnt->UserName($u{username}); $userEnt->Gecos($u{gecos});
- $userEnt->HomeDir($u{homedir}); $userEnt->LoginShell($u{shell});
- $username = $userEnt->UserName($GetValue);
- $model->foreach(sub {
- my ($mod, $_path, $iter) = @_;
- $ch = $mod->get($iter, 2);
- $name = $mod->get($iter, 1);
- $gEnt = $ctx->LookupGroupByName($name);
- $ugid = $gEnt->Gid($GetValue);
- my $m = $gEnt->MemberName(1,0);
- if ($ch == 1) {
- if (!InArray($username, $m) && $primgid != $ugid) {
- eval { $gEnt->MemberName($username, 1) };
- $ctx->GroupModify($gEnt);
- }
- } else {
- if (InArray($username, $m)) {
- eval { $gEnt->MemberName($username, 2) };
- $ctx->GroupModify($gEnt);
- }
- }
- return 0;
- }, undef);
- if ($us->{o}{primgroup}->entry->get_text eq '') {
- RaiseError(N("Please select at least one group for the user"));
- } elsif (!$error) {
- my $ent = $ctx->LookupGroupByName($us->{o}{primgroup}->entry->get_text);
- $ugid = $ent->Gid($GetValue);
- $userEnt->Gid($ugid);
- if ($us->{o}{acheckexpire}->get_active) {
- my $yr = $us->{o}{expy}->get_value;
- my $mo = $us->{o}{expm}->get_value;
- my $dy = $us->{o}{expd}->get_value;
- ValidInt($yr, $dy, $mo) or RaiseError(N("Please specify Year, Month and Day \n for Account Expiration "));
- if (!$error) { $Exp = ConvTime($dy, $mo, $yr); $userEnt->ShadowExpire($Exp) }
- } else { $userEnt->ShadowExpire(ceil(-1)) }
- if ($us->{o}{pcheckexpire}->get_active) {
- my $allowed = int($us->{o}{dbca}->get_text); my $required = int($us->{o}{dbcr}->get_text);
- my $warning = int($us->{o}{bwbc}->get_text); my $inactive = int($us->{o}{dbai}->get_text);
- $allowed && $required && $warning && $inactive or RaiseError(N("Please fill up all fields in password aging\n"));
- if (!$error) {
- $userEnt->ShadowMin($allowed); $userEnt->ShadowMax($required);
- $userEnt->ShadowWarn($warning); $userEnt->ShadowInact($inactive);
- }
- } else {
- $userEnt->ShadowMin(-1); $userEnt->ShadowMax(99999);
- $userEnt->ShadowWarn(-1); $userEnt->ShadowInact(-1);
- }
- !$error and $ctx->UserModify($userEnt);
- if ($us->{o}{lockuser}->get_active) {
- !$ctx->IsLocked($userEnt) and $ctx->Lock($userEnt);
- } else { $ctx->IsLocked($userEnt) and $ctx->UnLock($userEnt) }
- defined $us->{o}{iconval} and any::addKdmIcon($u{username}, $us->{o}{iconval});
- !$error and Refresh($sysfilter, $stringsearch);
- }
- }
-
+ UserEdit_valid($userEnt, $model, $primgid);
} elsif ($p == 1) {
$g{groupname} = $us->{o}{groupname}->get_text; $error = 0;
if (!valid_groupname($g{groupname})) { RaiseError($us->{error}) }
@@ -951,12 +971,12 @@ sub Edit() {
my $gid = $groupEnt->Gid($GetValue);
!$error and $model->foreach(sub {
my ($mod, $_path, $iter) = @_;
- $ch = $mod->get($iter, 2);
- $name = $mod->get($iter, 1);
+ my $ch = $mod->get($iter, 2);
+ my $name = $mod->get($iter, 1);
if ($ch == 1) {
if (!InArray($name, $members)) {
$uEnt = $ctx->LookupUserByName($name);
- $ugid = $uEnt->Gid($GetValue);
+ my $ugid = $uEnt->Gid($GetValue);
if ($ugid != $gid) {
eval { $groupEnt->MemberName($name,1) };
}