diff --git a/mozilla/webtools/bugzilla/bug_form.pl b/mozilla/webtools/bugzilla/bug_form.pl index 520949a3699..a556867f219 100644 --- a/mozilla/webtools/bugzilla/bug_form.pl +++ b/mozilla/webtools/bugzilla/bug_form.pl @@ -460,11 +460,18 @@ my $knum = 1; my $status = $bug{'bug_status'}; -my $canedit = UserInGroup("editbugs"); +# In the below, if the person hasn't logged in ($::userid == 0), then +# we treat them as if they can do anything. That's because we don't +# know why they haven't logged in; it may just be because they don't +# use cookies. Display everything as if they have all the permissions +# in the world; their permissions will get checked when they log in +# and actually try to make the change. + +my $canedit = UserInGroup("editbugs") || ($::userid == 0); my $canconfirm; if ($status eq $::unconfirmedstate) { - $canconfirm = UserInGroup("canconfirm"); + $canconfirm = UserInGroup("canconfirm") || ($::userid == 0); if ($canedit || $canconfirm) { print ""; print "Confirm bug (change status to NEW)
"; @@ -473,8 +480,8 @@ if ($status eq $::unconfirmedstate) { } -if ($::userid && ($canedit || $::userid == $assignedtoid || - $::userid == $reporterid || $::userid == $qacontactid)) { +if ($canedit || $::userid == $assignedtoid || + $::userid == $reporterid || $::userid == $qacontactid) { if (IsOpenedState($status)) { if ($status ne "ASSIGNED") { print ""; diff --git a/mozilla/webtools/bugzilla/process_bug.cgi b/mozilla/webtools/bugzilla/process_bug.cgi index 1e25ef86129..5b5b9e44eb0 100755 --- a/mozilla/webtools/bugzilla/process_bug.cgi +++ b/mozilla/webtools/bugzilla/process_bug.cgi @@ -279,6 +279,9 @@ sub ChangeStatus { } else { $::query .= "bug_status = '$str'"; } + $::FORM{'bug_status'} = $str; # Used later for call to + # CheckCanChangeField to make sure this + # is really kosher. } }