aboutsummaryrefslogtreecommitdiffstats
path: root/lib/AdminPanel/Module/Users.pm
diff options
context:
space:
mode:
authorAngelo Naselli <anaselli@linux.it>2014-10-11 13:13:03 +0200
committerAngelo Naselli <anaselli@linux.it>2014-10-11 13:13:03 +0200
commit0cc90fff930e9ece8b1e987a4331b6cbe2f61533 (patch)
tree3f3ceed1ac76eab1c428104a936a88733d43e44a /lib/AdminPanel/Module/Users.pm
parentff7c7697aaee4e71db4840e98ea747a8639471f4 (diff)
downloadcolin-keep-0cc90fff930e9ece8b1e987a4331b6cbe2f61533.tar
colin-keep-0cc90fff930e9ece8b1e987a4331b6cbe2f61533.tar.gz
colin-keep-0cc90fff930e9ece8b1e987a4331b6cbe2f61533.tar.bz2
colin-keep-0cc90fff930e9ece8b1e987a4331b6cbe2f61533.tar.xz
colin-keep-0cc90fff930e9ece8b1e987a4331b6cbe2f61533.zip
Better group filtering
Diffstat (limited to 'lib/AdminPanel/Module/Users.pm')
-rw-r--r--lib/AdminPanel/Module/Users.pm15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/AdminPanel/Module/Users.pm b/lib/AdminPanel/Module/Users.pm
index 12925e1..b32b948 100644
--- a/lib/AdminPanel/Module/Users.pm
+++ b/lib/AdminPanel/Module/Users.pm
@@ -601,7 +601,7 @@ sub _addGroupDialog {
## check data
my $groupname = $groupName->value();
my ($continue, $errorString) = $self->sh_users->valid_groupname($groupname);
- my $nm = $continue && $self->sh_users->groupNameExist($groupname);
+ my $nm = $continue && $self->sh_users->groupNameExists($groupname);
if ($nm) {
$groupName->setValue("");
$errorString = $self->loc->N("Group already exists, please choose another Group Name");
@@ -1200,8 +1200,17 @@ sub _refreshGroups {
if ($filtergroups && $g->Gid($self->sh_users->USER_GetValue) > 499 && $g->Gid($self->sh_users->USER_GetValue) < 1000) {
my $groupname = $g->GroupName($self->sh_users->USER_GetValue);
my $l = $self->sh_users->ctx->LookupUserByName($groupname);
- next if ! defined($l);
- next LOOP if $l->HomeDir($self->sh_users->USER_GetValue) =~ /^\/($|var\/|run\/)/ || $l->LoginShell($self->sh_users->USER_GetValue) =~ /(nologin|false)$/;
+ if (!defined($l)) {
+ my $members = $self->sh_users->ctx->EnumerateUsersByGroup($groupname);
+ next LOOP if !scalar(@{$members});
+ foreach my $username (@$members) {
+ my $userEnt = $self->sh_users->ctx->LookupUserByName($username);
+ next LOOP if $userEnt->HomeDir($self->sh_users->USER_GetValue) =~ /^\/($|var\/|run\/)/ || $userEnt->LoginShell($self->sh_users->USER_GetValue) =~ /(nologin|false)$/;
+ }
+ }
+ else {
+ next LOOP if $l->HomeDir($self->sh_users->USER_GetValue) =~ /^\/($|var\/|run\/)/ || $l->LoginShell($self->sh_users->USER_GetValue) =~ /(nologin|false)$/;
+ }
}
push @GroupReal, $g if $g->GroupName($self->sh_users->USER_GetValue) =~ /^\Q$strfilt/;