Fix user chooser to allow specification by group name
authorJamie Cameron <jcameron@webmin.com>
Mon, 20 Oct 2008 21:23:50 +0000 (21:23 +0000)
committerJamie Cameron <jcameron@webmin.com>
Mon, 20 Oct 2008 21:23:50 +0000 (21:23 +0000)
user_chooser.cgi

index 451e805..9594841 100755 (executable)
@@ -151,13 +151,19 @@ if ($access{'uedit_mode'} == 2 || $access{'uedit_mode'} == 3) {
        }
 setpwent();
 while(@uinfo = getpwent()) {
+       if ($access{'uedit_mode'} == 5 && $access{'uedit'} !~ /^\d+$/) {
+               # Get group for matching by group name
+               @ginfo = getgrgid($uinfo[3]);
+               }
        if ($access{'uedit_mode'} == 0 ||
            $access{'uedit_mode'} == 2 && $ucan{$uinfo[0]} ||
            $access{'uedit_mode'} == 3 && !$ucan{$uinfo[0]} ||
            $access{'uedit_mode'} == 4 &&
                (!$access{'uedit'} || $uinfo[2] >= $access{'uedit'}) &&
                (!$access{'uedit2'} || $uinfo[2] <= $access{'uedit2'}) ||
-           $access{'uedit_mode'} == 5 && $uinfo[3] == $access{'uedit'}) {
+           $access{'uedit_mode'} == 5 &&
+            ($access{'uedit'} =~ /^\d+$/ && $uinfo[3] == $access{'uedit'} ||
+             $ginfo[0] eq $access{'uedit'})) {
                push(@users, [ @uinfo ]) if (!$found{$uinfo[0]}++);
                }
        }