Discussion:
[software/adminpanel] 01/05: Another GroupName moved
root-odJJhXpcy38dnm+
2014-10-14 20:42:43 UTC
Permalink
This is an automated email from the git hooks/post-receive script.

anaselli pushed a commit to branch master
in repository software/adminpanel.

commit ee4289fc1f3a4e93b44561faba2a41634742d1fd
Author: Angelo Naselli <anaselli-***@public.gmane.org>
Date: Sun Oct 12 11:47:33 2014 +0200

Another GroupName moved
---
Commit Link:
http://gitweb.mageia.org/software/adminpanel/commit/?id=ee4289fc1f3a4e93b44561faba2a41634742d1fd

lib/AdminPanel/Module/Users.pm | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/lib/AdminPanel/Module/Users.pm b/lib/AdminPanel/Module/Users.pm
index 5335f0a..c7913d1 100644
--- a/lib/AdminPanel/Module/Users.pm
+++ b/lib/AdminPanel/Module/Users.pm
@@ -2132,8 +2132,7 @@ sub _editUserDialog {
for(my $i=0;$i < $tbl->itemsCount();$i++) {
if ($tbl->toCBYTableItem($tbl->item($i))->checked()) {
my $pgItem = new yui::YItem ($tbl->item($i)->label(), 0);
- my $Gent = $self->sh_users->ctx->LookupGroupById($userData->{primary_group});
- my $primgroup = $Gent->GroupName($self->sh_users->USER_GetValue);
+ my $primgroup = $self->sh_users->groupName($userData->{primary_group});
$pgItem->setSelected(1) if ($pgItem->label() eq $primgroup);

$itemColl->push($pgItem);
--
Mageia Git Monkeys.
root-odJJhXpcy38dnm+
2014-10-14 20:42:45 UTC
Permalink
This is an automated email from the git hooks/post-receive script.

anaselli pushed a commit to branch master
in repository software/adminpanel.

commit 87b62edabda2799dcb324b8f6a91e31fd70f7e3e
Author: Angelo Naselli <anaselli-***@public.gmane.org>
Date: Sun Oct 12 15:57:47 2014 +0200

moved modifyGroup to Shared::Users and changed Module::Users accordingly
---
Commit Link:
http://gitweb.mageia.org/software/adminpanel/commit/?id=87b62edabda2799dcb324b8f6a91e31fd70f7e3e

lib/AdminPanel/Module/Users.pm | 44 ++++++----------------
lib/AdminPanel/Shared/Users.pm | 78 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 90 insertions(+), 32 deletions(-)

diff --git a/lib/AdminPanel/Module/Users.pm b/lib/AdminPanel/Module/Users.pm
index c7913d1..4d735a2 100644
--- a/lib/AdminPanel/Module/Users.pm
+++ b/lib/AdminPanel/Module/Users.pm
@@ -1820,43 +1820,23 @@ sub _groupEdit_Ok {
$self->sh_gui->msgBox({text => $errorString}) if ($errorString);
return $continue;
}
- my $groupEnt = $self->sh_users->ctx->LookupGroupByName($groupData{start_groupname});
+ $DB::single = 1;
+
+ my $groupInfo = {
+ groupname => $groupData{groupname},
+ members => $groupData{members},
+ };
+
if ($groupData{start_groupname} ne $groupData{groupname}) {
- $groupEnt->GroupName($groupData{groupname});
+ $groupInfo->{old_groupname} = $groupData{start_groupname};
}

- my $members = $groupData{members};
- my $gid = $groupEnt->Gid($self->sh_users->USER_GetValue);
- my $users = $self->sh_users->getUsers();
- my @susers = sort(@$users);
+ my $retval = $self->sh_users->modifyGroup($groupInfo);

- foreach my $user (@susers) {
- my $uEnt = $self->sh_users->ctx->LookupGroupByName($user);
- if ($uEnt) {
- my $ugid = $uEnt->Gid($self->sh_users->USER_GetValue);
- my $m = $self->sh_users->ctx->EnumerateUsersByGroup($groupData{start_groupname});
- if (MDK::Common::DataStructure::member($user, @$members)) {
- if (!AdminPanel::Shared::inArray($user, $m)) {
- if ($ugid != $gid) {
- eval { $groupEnt->MemberName($user,1) };
- }
- }
- }
- else {
- if (AdminPanel::Shared::inArray($user, $m)) {
- if ($ugid == $gid) {
- $self->sh_gui->msgBox({text => $self->loc->N("You cannot remove user '%s' from their primary group", $user)});
- return 0;
- }
- else {
- eval { $groupEnt->MemberName($user,2) };
- }
- }
- }
- }
- }
+ if (!$retval->{status}) {
+ $self->sh_gui->msgBox({text => $retval->{error}} );
+ }

- $self->sh_users->ctx->GroupModify($groupEnt);
$self->_refresh();

return 1;
diff --git a/lib/AdminPanel/Shared/Users.pm b/lib/AdminPanel/Shared/Users.pm
index 9357fc9..9d8fca2 100644
--- a/lib/AdminPanel/Shared/Users.pm
+++ b/lib/AdminPanel/Shared/Users.pm
@@ -749,6 +749,84 @@ sub deleteGroup {
}


+
+#=============================================================
+
+=head2 modifyGroup
+
+=head3 INPUT
+
+ $groupInfo: HASH reference containing:
+ old_groupname => old name of the group (if renaming)
+ groupname => group name
+ members => users belonging to the group
+
+=head3 INPUT
+ $retval => HASH reference
+ status => 1 (ok) 0 (error)
+ error => error message if status is 0
+
+=head3 DESCRIPTION
+
+ This method modifies the group groupname
+
+=cut
+
+#=============================================================
+sub modifyGroup {
+ my ($self, $groupInfo) = @_;
+
+ die "group name is mandatory" if !defined($groupInfo->{groupname});
+
+ my $groupEnt = defined($groupInfo->{old_groupname}) ?
+ $self->ctx->LookupGroupByName($groupInfo->{old_groupname}) :
+ $self->ctx->LookupGroupByName($groupInfo->{groupname});
+
+ my $orig_groupname = $groupInfo->{groupname};
+ if (defined($groupInfo->{old_groupname}) &&
+ $groupInfo->{old_groupname} ne $groupInfo->{groupname}) {
+ $groupEnt->GroupName($groupInfo->{groupname});
+ $orig_groupname = $groupInfo->{old_groupname};
+ }
+
+ my $members = $groupInfo->{members};
+ my $gid = $groupEnt->Gid($self->USER_GetValue);
+ my $users = $self->getUsers();
+ my @susers = sort(@{$users});
+
+ foreach my $user (@susers) {
+ my $uEnt = $self->ctx->LookupGroupByName($user);
+ if ($uEnt) {
+ my $ugid = $uEnt->Gid($self->USER_GetValue);
+ my $m = $self->ctx->EnumerateUsersByGroup($orig_groupname);
+ if (MDK::Common::DataStructure::member($user, @{$members})) {
+ if (!AdminPanel::Shared::inArray($user, $m)) {
+ if ($ugid != $gid) {
+ eval { $groupEnt->MemberName($user, 1) };
+ }
+ }
+ }
+ else {
+ if (AdminPanel::Shared::inArray($user, $m)) {
+ if ($ugid == $gid) {
+ return {
+ status => 0,
+ error =>$self->loc->N("You cannot remove user <%s> from their primary group", $user)
+ };
+ }
+ else {
+ eval { $groupEnt->MemberName($user, 2) };
+ }
+ }
+ }
+ }
+ }
+
+ $self->ctx->GroupModify($groupEnt);
+
+ return {status => 1,};
+}
+
#=============================================================

=head2 getGroupsInfo
--
Mageia Git Monkeys.
root-odJJhXpcy38dnm+
2014-10-14 20:42:44 UTC
Permalink
This is an automated email from the git hooks/post-receive script.

anaselli pushed a commit to branch master
in repository software/adminpanel.

commit 9fcb30e55a7f191fbe0c25e16d24547da94a1af3
Author: Angelo Naselli <anaselli-***@public.gmane.org>
Date: Sun Oct 12 12:09:39 2014 +0200

fixed documenation layout
---
Commit Link:
http://gitweb.mageia.org/software/adminpanel/commit/?id=9fcb30e55a7f191fbe0c25e16d24547da94a1af3

lib/AdminPanel/Shared/Users.pm | 154 ++++++++++++++++++++--------------------
1 files changed, 76 insertions(+), 78 deletions(-)

diff --git a/lib/AdminPanel/Shared/Users.pm b/lib/AdminPanel/Shared/Users.pm
index 9839f8b..9357fc9 100644
--- a/lib/AdminPanel/Shared/Users.pm
+++ b/lib/AdminPanel/Shared/Users.pm
@@ -198,7 +198,7 @@ sub BUILD {

=head3 OUTPUT

- path to directory containing face icon
+ path to directory containing face icon

=head3 DESCRIPTION

@@ -244,7 +244,7 @@ sub userfacedir {

=head3 INPUT

- $face: face icon name (usually username)
+ $face: face icon name (usually username)

=head3 OUTPUT

@@ -271,7 +271,7 @@ sub face2png {

=head3 OUTPUT

- \@namelist: ARRAY reference containing the face name list
+ $namelist: ARRAY reference containing the face name list

=head3 DESCRIPTION

@@ -395,7 +395,7 @@ sub _valid {

=head3 INPUT

-$username: user name to check
+ $username: user name to check

=head3 OUTPUT

@@ -421,7 +421,7 @@ sub valid_username {

=head3 INPUT

-$groupname: user name to check
+ $groupname: user name to check

=head3 OUTPUT

@@ -497,15 +497,15 @@ sub getGoups {

=head3 INPUT

-$groupname: the name of the group to check
+ $groupname: the name of the group to check

=head3 OUTPUT

-if group exists
+ if group exists

=head3 DESCRIPTION

-This method return if a given group exists
+ This method return if a given group exists

=cut

@@ -524,15 +524,15 @@ sub groupNameExists {

=head3 INPUT

-$group: the id of the group to check
+ $group: the id of the group to check

=head3 OUTPUT

-if group exists
+ if group exists

=head3 DESCRIPTION

-This method return if a given group exists
+ This method return if a given group exists

=cut

@@ -552,15 +552,15 @@ sub groupIDExists {

=head3 INPUT

-$groupname: group name
+ $groupname: group name

=head3 OUTPUT

-groupid or undef
+ groupid or undef

=head3 DESCRIPTION

-This method returns the group id for the group name
+ This method returns the group id for the group name

=cut

@@ -580,16 +580,16 @@ sub groupID {

=head3 INPUT

-$gid grou identifier
+ $gid group identifier

=head3 OUTPUT

-group name or undef
+ group name or undef

=head3 DESCRIPTION

-This method returns the group name for the given group
-identifier
+ This method returns the group name for the given group
+ identifier

=cut

@@ -610,10 +610,10 @@ sub groupName {

=head3 INPUT

-$params: HASH reference containing:
- groupname => name of teh group to be added
- gid => group id of the group to be added
- is_system => is a system group?
+ $params: HASH reference containing:
+ groupname => name of teh group to be added
+ gid => group id of the group to be added
+ is_system => is a system group?

=head3 OUTPUT

@@ -621,12 +621,11 @@ $params: HASH reference containing:

=head3 DESCRIPTION

-This method add a group to system
+ This method add a group to system

=cut

#=============================================================
-
sub addGroup {
my ($self, $params) = @_;

@@ -653,17 +652,17 @@ sub addGroup {

=head3 INPUT

-$groupname: The group name
+ $groupname: The group name

=head3 OUTPUT

-$members: ARRAY reference containing all the user belonging
- to the given $groupname
+ $members: ARRAY reference containing all the user belonging
+ to the given $groupname

=head3 DESCRIPTION

-This method gets the group name and returns the users belonging
-to it
+ This method gets the group name and returns the users
+ belonging to it

=cut

@@ -685,17 +684,17 @@ sub groupMembers {

=head3 INPUT

-$groupname: the name of the group
+ $groupname: the name of the group

=head3 OUTPUT

-$username: undef if it is primary group or the username for
- which the group is the primary one.
+ $username: undef if it is primary group or the username for
+ which the group is the primary one.

=head3 DESCRIPTION

-This methods check if the given group name is primary group
-for any users belonging to the group
+ This methods check if the given group name is primary group
+ for any users belonging to the group

=cut

@@ -723,16 +722,16 @@ sub isPrimaryGroup {

=head3 INPUT

-$groupname: in_par_description
+ $groupname: in_par_description

=head3 OUTPUT

-0: if error occurred
-1: if removed
+ 0: if error occurred
+ 1: if removed

=head3 DESCRIPTION

-This method remove the group from the system
+ This method remove the group from the system

=cut

@@ -754,7 +753,7 @@ sub deleteGroup {

=head2 getGroupsInfo

-$options: HASH reference containing
+ $options: HASH reference containing
groupname_filter => groupname search string
filter_system => hides system groups

@@ -774,7 +773,6 @@ $options: HASH reference containing
This method get group information (all groups or the
filtered ones)

-
=cut

#=============================================================
@@ -856,7 +854,8 @@ sub getUsers {

=head3 OUTPUT

-$userInfo: HASH reference containing
+ $userInfo: HASH reference containing
+ {
uid => user identifier
gid => group identifier
fullname => user full name
@@ -870,10 +869,11 @@ $userInfo: HASH reference containing
exp_inact => shadow Inact
last_change => Shadow last change
members => groups the user belongs to
+ }

=head3 DESCRIPTION

-This method get all the information for the given user
+ This method get all the information for the given user

=cut

@@ -913,18 +913,18 @@ sub getUserInfo {

=head3 INPUT

-$options: HASH reference containing
- username_filter => username search string
- filter_system => hides system users
+ $options: HASH reference containing
+ username_filter => username search string
+ filter_system => hides system users

=head3 OUTPUT

-$usersInfo: HASH reference containing
+ $usersInfo: HASH reference containing
username-1 => {
uid => user identifier
group => primary group name
gid => group identifier
- fullname => user full name
+ fullname => user full name
home => home directory
shell => user shell
status => login status (locked, expired, etc)
@@ -935,7 +935,7 @@ $usersInfo: HASH reference containing

=head3 DESCRIPTION

-This method get user information (all users or filtered ones)
+ This method get user information (all users or filtered ones)

=cut

@@ -1030,15 +1030,15 @@ sub getUserHome {

=head3 INPUT

-$username: the name of the user to check
+ $username: the name of the user to check

=head3 OUTPUT

-if user exists
+ if user exists

=head3 DESCRIPTION

-This method return if a given user exists
+ This method return if a given user exists

=cut

@@ -1086,20 +1086,20 @@ sub computeLockExpire {

=head3 INPUT

-$params: HASH reference containing:
- username => name of teh user to be added
- uid => user id of the username to be added
- is_system => is a system user?
- homedir => user home directory
- donotcreatehome => do not create the home directory
- shell => user shall
- fullname => user full name
- gid => group id for the user
- shadowMin => min time password validity
- shadowMax => max time password validity
- shadowInact =>
- shadowWarn =>
- password => user password
+ $params: HASH reference containing:
+ username => name of teh user to be added
+ uid => user id of the username to be added
+ is_system => is a system user?
+ homedir => user home directory
+ donotcreatehome => do not create the home directory
+ shell => user shall
+ fullname => user full name
+ gid => group id for the user
+ shadowMin => min time password validity
+ shadowMax => max time password validity
+ shadowInact =>
+ shadowWarn =>
+ password => user password

=head3 OUTPUT

@@ -1107,12 +1107,11 @@ $params: HASH reference containing:

=head3 DESCRIPTION

-This method add a user to system
+ This method add a user to system

=cut

#=============================================================
-
sub addUser {
my ($self, $params) = @_;

@@ -1152,18 +1151,18 @@ sub addUser {

=head3 INPUT

-$username: username to be deleted
-$options: HASH reference containing
- clean_home => if home has to be removed
- clean_spool => if sppol has to be removed
+ $username: username to be deleted
+ $options: HASH reference containing
+ clean_home => if home has to be removed
+ clean_spool => if sppol has to be removed

=head3 OUTPUT

-error string or undef if no errors occurred
+ error string or undef if no errors occurred

=head3 DESCRIPTION

-This method delete a user from the system.
+ This method delete a user from the system.

=cut

@@ -1209,11 +1208,11 @@ sub deleteUser {

=head3 OUTPUT

-GetUserShells: from libUSER
+ GetUserShells: from libUSER

=head3 DESCRIPTION

-This method returns the available shell
+ This method returns the available shell

=cut

@@ -1231,7 +1230,7 @@ sub getUserShells {
=head3 INPUT

$name: icon name for the given username
- $next: if passed means getting next icon from the given $name
+ $next: if passed means getting next icon from the given $name

=head3 OUTPUT

@@ -1339,7 +1338,6 @@ sub strongPassword {
=cut

#=============================================================
-
sub weakPasswordForSecurityLevel {
my ($self, $passwd) = @_;

@@ -1373,7 +1371,7 @@ sub weakPasswordForSecurityLevel {

=head3 DESCRIPTION

-Adds the given username $name to 'users' group
+ Adds the given username $name to 'users' group

=cut
--
Mageia Git Monkeys.
root-odJJhXpcy38dnm+
2014-10-14 20:42:47 UTC
Permalink
This is an automated email from the git hooks/post-receive script.

anaselli pushed a commit to branch master
in repository software/adminpanel.

commit e59223e7737d9d85fdbb155ad30c2172f81e9774
Author: Angelo Naselli <anaselli-***@public.gmane.org>
Date: Tue Oct 14 22:42:03 2014 +0200

fixed user change name and expirirng time
---
Commit Link:
http://gitweb.mageia.org/software/adminpanel/commit/?id=e59223e7737d9d85fdbb155ad30c2172f81e9774

lib/AdminPanel/Module/Users.pm | 13 +++----------
lib/AdminPanel/Shared/Users.pm | 8 ++++++++
2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/lib/AdminPanel/Module/Users.pm b/lib/AdminPanel/Module/Users.pm
index 3c0a1b8..14d74cd 100644
--- a/lib/AdminPanel/Module/Users.pm
+++ b/lib/AdminPanel/Module/Users.pm
@@ -1281,7 +1281,8 @@ sub _getUserInfo {
}

my %userData;
- $userData{username} = $item->label();
+ $userData{old_username} = $item->label();
+ $userData{username} = $item->label();

my $userInfo = $self->sh_users->getUserInfo($userData{username});

@@ -1873,7 +1874,6 @@ sub _userEdit_Ok {
}

my $userInfo = {
-# old_username => $TDODO,
username => $userData->{username},
fullname => $userData->{full_name},
homedir => $userData->{homedir},
@@ -1883,6 +1883,7 @@ sub _userEdit_Ok {
lockuser => $userData->{lockuser},
};

+ $userInfo->{old_username} = $userData->{old_username} if $userData->{username} ne $userData->{old_username};
$userInfo->{password} = $userData->{password} if $userData->{password} ne '';


@@ -2578,14 +2579,6 @@ sub _ValidInt {
return 1;
}

-sub _ConvTime {
- my ($day, $month, $year) = @_;
- my ($tm, $days, $mon, $yr);
- $mon = $month - 1; $yr = $year - 1900;
- $tm = POSIX::mktime(0, 0, 0, $day, $mon, $yr);
- $days = ceil($tm / (24 * 60 * 60));
- return $days;
-}

sub _TimeOfArray {
my ($reltime, $cm) = @_;
diff --git a/lib/AdminPanel/Shared/Users.pm b/lib/AdminPanel/Shared/Users.pm
index 9407734..73322cd 100644
--- a/lib/AdminPanel/Shared/Users.pm
+++ b/lib/AdminPanel/Shared/Users.pm
@@ -1597,6 +1597,14 @@ sub Add2UsersGroup {
return $usersgroup->Gid($self->USER_GetValue);
}

+sub _ConvTime {
+ my ($day, $month, $year) = @_;
+ my ($tm, $days, $mon, $yr);
+ $mon = $month - 1; $yr = $year - 1900;
+ $tm = POSIX::mktime(0, 0, 0, $day, $mon, $yr);
+ $days = ceil($tm / (24 * 60 * 60));
+ return $days;
+}

no Moose;
__PACKAGE__->meta->make_immutable;
--
Mageia Git Monkeys.
root-odJJhXpcy38dnm+
2014-10-14 20:42:46 UTC
Permalink
This is an automated email from the git hooks/post-receive script.

anaselli pushed a commit to branch master
in repository software/adminpanel.

commit b6132cc811fcd1968643c736c0a0f6346aec89ea
Author: Angelo Naselli <anaselli-***@public.gmane.org>
Date: Mon Oct 13 22:58:50 2014 +0200

moved modifyUser to Shared
---
Commit Link:
http://gitweb.mageia.org/software/adminpanel/commit/?id=b6132cc811fcd1968643c736c0a0f6346aec89ea

lib/AdminPanel/Module/Users.pm | 85 +++++++++----------------
lib/AdminPanel/Shared/Users.pm | 137 +++++++++++++++++++++++++++++++++++++++-
2 files changed, 166 insertions(+), 56 deletions(-)

diff --git a/lib/AdminPanel/Module/Users.pm b/lib/AdminPanel/Module/Users.pm
index 4d735a2..3c0a1b8 100644
--- a/lib/AdminPanel/Module/Users.pm
+++ b/lib/AdminPanel/Module/Users.pm
@@ -1845,6 +1845,7 @@ sub _groupEdit_Ok {
sub _userEdit_Ok {
my ($self, $userData) = @_;

+ $DB::single = 1;
# update last changes if any
$self->_storeDataFromUserEditPreviousTab($userData);

@@ -1858,46 +1859,32 @@ sub _userEdit_Ok {
$self->sh_gui->msgBox({text => $self->loc->N("Password Mismatch")});
return 0;
}
- my $userEnt = $self->sh_users->ctx->LookupUserByName($userData->{username});
+
if ($userData->{password} ne '') {
if ($self->sh_users->weakPasswordForSecurityLevel($userData->{password})) {
$self->sh_gui->msgBox({text => $self->loc->N("This password is too simple. \n Good passwords should be > 6 characters")});
return 0;
}
- $self->sh_users->ctx->UserSetPass($userEnt, $userData->{password});
}

- $userEnt->UserName($userData->{username});
- $userEnt->Gecos($userData->{full_name});
- $userEnt->HomeDir($userData->{homedir});
- $userEnt->LoginShell($userData->{shell});
- my $username = $userEnt->UserName($self->sh_users->USER_GetValue);
- my $grps = $self->sh_users->getGoups();
- my @sgroups = sort @$grps;
-
- my $members = $userData->{members};
- foreach my $group (@sgroups) {
- my $gEnt = $self->sh_users->ctx->LookupGroupByName($group);
- my $ugid = $gEnt->Gid($self->sh_users->USER_GetValue);
- my $m = $gEnt->MemberName(1,0);
- if (MDK::Common::DataStructure::member($group, @$members)) {
- if (!AdminPanel::Shared::inArray($username, $m) && $userData->{primary_group} != $ugid) {
- eval { $gEnt->MemberName($username, 1) };
- $self->sh_users->ctx->GroupModify($gEnt);
- }
- }
- else {
- if (AdminPanel::Shared::inArray($username, $m)) {
- eval { $gEnt->MemberName($username, 2) };
- $self->sh_users->ctx->GroupModify($gEnt);
- }
- }
- }
if ($userData->{primary_group} == -1) {
$self->sh_gui->msgBox({ text => $self->loc->N("Please select at least one group for the user")});
return 0;
}
- $userEnt->Gid($userData->{primary_group});
+
+ my $userInfo = {
+# old_username => $TDODO,
+ username => $userData->{username},
+ fullname => $userData->{full_name},
+ homedir => $userData->{homedir},
+ shell => $userData->{shell},
+ members => $userData->{members},
+ gid => $userData->{primary_group},
+ lockuser => $userData->{lockuser},
+ };
+
+ $userInfo->{password} = $userData->{password} if $userData->{password} ne '';
+

if ($userData->{acc_check_exp}) {
my $yr = $userData->{acc_expy};
@@ -1907,11 +1894,11 @@ sub _userEdit_Ok {
$self->sh_gui->msgBox({text => $self->loc->N("Please specify Year, Month and Day \n for Account Expiration ")});
return 0;
}
- my $Exp = _ConvTime($dy, $mo, $yr);
- $userEnt->ShadowExpire($Exp);
- }
- else {
- $userEnt->ShadowExpire(ceil(-1))
+ $userInfo->{acc_expires} = {
+ exp_y => $yr,
+ exp_m => $mo,
+ exp_d => $dy,
+ };
}

if ($userData->{pwd_check_exp}) {
@@ -1919,32 +1906,20 @@ sub _userEdit_Ok {
my $required = int($userData->{pwd_exp_max});
my $warning = int($userData->{pwd_exp_warn});
my $inactive = int($userData->{pwd_exp_inact});
- if ($allowed && $required && $warning && $inactive) {
- $userEnt->ShadowMin($allowed);
- $userEnt->ShadowMax($required);
- $userEnt->ShadowWarn($warning);
- $userEnt->ShadowInact($inactive);
- }
- else {
+ if (!$allowed || !$required || !$warning || !$inactive) {
$self->sh_gui->msgBox({text => $self->loc->N("Please fill up all fields in password aging\n")});
return 0;
}
+ $userInfo->{password_expires} = {
+ exp_min => $allowed,
+ exp_max => $required,
+ exp_warn => $warning,
+ exp_inact => $inactive,
+ };
}
- else {
- $userEnt->ShadowMin(-1);
- $userEnt->ShadowMax(99999);
- $userEnt->ShadowWarn(-1);
- $userEnt->ShadowInact(-1);
- }
-
- $self->sh_users->ctx->UserModify($userEnt);

- if ($userData->{lockuser}) {
- !$self->sh_users->ctx->IsLocked($userEnt) and $self->sh_users->ctx->Lock($userEnt);
- }
- else {
- $self->sh_users->ctx->IsLocked($userEnt) and $self->sh_users->ctx->UnLock($userEnt);
- }
+ $self->sh_users->modifyUser($userInfo);
+

defined $userData->{icon_face} and $self->sh_users->addKdmIcon($userData->{username}, $userData->{icon_face});
$self->_refresh();
diff --git a/lib/AdminPanel/Shared/Users.pm b/lib/AdminPanel/Shared/Users.pm
index 9d8fca2..9407734 100644
--- a/lib/AdminPanel/Shared/Users.pm
+++ b/lib/AdminPanel/Shared/Users.pm
@@ -761,7 +761,8 @@ sub deleteGroup {
groupname => group name
members => users belonging to the group

-=head3 INPUT
+=head3 OUTPUT
+
$retval => HASH reference
status => 1 (ok) 0 (error)
error => error message if status is 0
@@ -1225,6 +1226,140 @@ sub addUser {

#=============================================================

+=head2 modifyUser
+
+=head3 INPUT
+
+ $userInfo: HASH reference containing:
+ old_username => old name of the user (if renaming)
+ username => user name
+ fullname => full name of teh user
+ password => password
+ homedir => home directory
+ shell => user shell
+ members => groups the user belongs to
+ gid => primary group identifier
+ lockuser => lock user
+ acc_expires => account expire time - containing:
+ exp_y => year
+ exp_m => month
+ exp_d => day
+ password_expires => password expire time - containing:
+ exp_min => min
+ exp_max => max
+ exp_warn => when warn
+ exp_inact => when inactive
+
+=head3 DESCRIPTION
+
+ This method modifies the group groupname
+
+=cut
+
+#=============================================================
+sub modifyUser {
+ my ($self, $userInfo) = @_;
+
+ die "user name is mandatory" if !defined($userInfo->{username});
+ die "primary group identifier is mandatory" if !defined($userInfo->{gid});
+ die "a valid group identifier is mandatory" if $userInfo->{gid} < 0;
+
+ if (defined($userInfo->{acc_expires})) {
+ die "expiring year is mandatory" if !defined($userInfo->{acc_expires}->{exp_y});
+ die "expiring month is mandatory" if !defined($userInfo->{acc_expires}->{exp_m});
+ die "expiring day is mandatory" if !defined($userInfo->{acc_expires}->{exp_d});
+ }
+ if (defined($userInfo->{password_expires})) {
+ die "password expiring min is mandatory" if !($userInfo->{password_expires}->{exp_min});
+ die "password expiring max is mandatory" if !($userInfo->{password_expires}->{exp_max});
+ die "password expiring warn is mandatory" if !($userInfo->{password_expires}->{exp_warn});
+ die "password expiring inactive is mandatory" if !($userInfo->{password_expires}->{exp_inact});
+ }
+ my $userEnt = defined($userInfo->{old_username}) ?
+ $self->ctx->LookupUserByName($userInfo->{old_username}) :
+ $self->ctx->LookupUserByName($userInfo->{username});
+
+ my $orig_username = $userInfo->{username};
+ if (defined($userInfo->{old_username}) &&
+ $userInfo->{old_username} ne $userInfo->{username}) {
+ $userEnt->UserName($userInfo->{username});
+ $orig_username = $userInfo->{old_username};
+ }
+
+ # $userEnt->UserName($userInfo->{username});
+ $userEnt->Gecos($userInfo->{fullname}) if defined($userInfo->{fullname});
+ $userEnt->HomeDir($userInfo->{homedir}) if defined($userInfo->{homedir});
+ $userEnt->LoginShell($userInfo->{shell}) if defined($userInfo->{shell});
+
+
+ my $username = $userEnt->UserName($self->USER_GetValue);
+ my $grps = $self->getGoups();
+ my @sgroups = sort @{$grps};
+
+ my $members = $userInfo->{members};
+ foreach my $group (@sgroups) {
+ my $gEnt = $self->ctx->LookupGroupByName($group);
+ my $ugid = $gEnt->Gid($self->USER_GetValue);
+ my $m = $gEnt->MemberName(1,0);
+ if (MDK::Common::DataStructure::member($group, @$members)) {
+ if (!AdminPanel::Shared::inArray($username, $m) && $userInfo->{gid} != $ugid) {
+ eval { $gEnt->MemberName($username, 1) };
+ $self->ctx->GroupModify($gEnt);
+ }
+ }
+ else {
+ if (AdminPanel::Shared::inArray($username, $m)) {
+ eval { $gEnt->MemberName($username, 2) };
+ $self->ctx->GroupModify($gEnt);
+ }
+ }
+ }
+
+ $userEnt->Gid($userInfo->{gid}) if defined($userInfo->{gid});
+
+ if (defined($userInfo->{acc_expires})) {
+ my $yr = $userInfo->{acc_expires}->{exp_y};
+ my $mo = $userInfo->{acc_expires}->{exp_m};
+ my $dy = $userInfo->{acc_expires}->{exp_d};
+ my $Exp = _ConvTime($dy, $mo, $yr);
+ $userEnt->ShadowExpire($Exp);
+ }
+ else {
+ $userEnt->ShadowExpire(ceil(-1))
+ }
+ if (defined($userInfo->{password_expires})) {
+ my $allowed = $userInfo->{password_expires}->{exp_min};
+ my $required = $userInfo->{password_expires}->{exp_max};
+ my $warning = $userInfo->{password_expires}->{exp_warn};
+ my $inactive = $userInfo->{password_expires}->{exp_inact};
+ $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);
+ }
+
+ $self->ctx->UserSetPass($userEnt, $userInfo->{password}) if defined($userInfo->{password});
+ $self->ctx->UserModify($userEnt);
+
+ if ($userInfo->{lockuser}) {
+ !$self->ctx->IsLocked($userEnt) and $self->ctx->Lock($userEnt);
+ }
+ else {
+ $self->ctx->IsLocked($userEnt) and $self->ctx->UnLock($userEnt);
+ }
+
+ return 1;
+}
+
+
+#=============================================================
+
=head2 deleteUser

=head3 INPUT
--
Mageia Git Monkeys.
Loading...