From 9a07ea292800bf33eb660f893de8a2d89569541d Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Mon, 30 Mar 2015 12:43:40 +0800 Subject: Bug 1125987: asking for review in a restricted bug doesn't work as expected ("You must provide a reviewer for review requests" instead of "That user cannot access that bug" error) --- extensions/Review/Extension.pm | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'extensions/Review') diff --git a/extensions/Review/Extension.pm b/extensions/Review/Extension.pm index 07f1f66c0..80841dfb1 100644 --- a/extensions/Review/Extension.pm +++ b/extensions/Review/Extension.pm @@ -514,7 +514,7 @@ sub create_attachment_flags { sub _check_review_flag { my ($self, $args) = @_; - my $bug = $args->{bug}; + my ($bug, $attachment) = @$args{qw( bug attachment )}; my $cgi = Bugzilla->cgi; # extract the set flag-types @@ -552,6 +552,22 @@ sub _check_review_flag { if (scalar(@$users) > 1) { ThrowUserError('user_match_too_many', { fields => [ 'review' ] }); } + + # we want to throw an error if the requestee does not have access + # to the bug. bugzilla's default behaviour is to sliently drop the + # requestee, which results in a confusing 'reviewer required' + # error. + # fake it by creating a flag and try to set the requestee. + # bugzilla's flags don't have a normal constructor or property + # setters, so we have to bless it directly then call the internal + # check_requestee method. urgh. + my $flag = bless({ + type_id => $flag_type->id, + status => '?', + bug_id => $bug->id, + attach_id => $attachment->id + }, 'Bugzilla::Flag'); + $flag->_check_requestee($reviewer, $bug, $attachment); } } } -- cgit v1.2.3-24-g4f1b