summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Bug.pm18
1 files changed, 17 insertions, 1 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm
index bade02f68..ff0f2089f 100644
--- a/Bugzilla/Bug.pm
+++ b/Bugzilla/Bug.pm
@@ -476,7 +476,7 @@ sub run_create_validators {
$params->{cc} = $class->_check_cc($component, $params->{cc});
# Callers cannot set Reporter, currently.
- $params->{reporter} = Bugzilla->user->id;
+ $params->{reporter} = $class->_check_reporter();
$params->{creation_ts} ||= Bugzilla->dbh->selectrow_array('SELECT NOW()');
$params->{delta_ts} = $params->{creation_ts};
@@ -1358,6 +1358,22 @@ sub _check_rep_platform {
return $platform;
}
+sub _check_reporter {
+ my $invocant = shift;
+ my $reporter;
+ if (ref $invocant) {
+ # You cannot change the reporter of a bug.
+ $reporter = $invocant->reporter->id;
+ }
+ else {
+ # On bug creation, the reporter is the logged in user
+ # (meaning that he must be logged in first!).
+ $reporter = Bugzilla->user->id;
+ $reporter || ThrowCodeError('invalid_user');
+ }
+ return $reporter;
+}
+
sub _check_resolution {
my ($self, $resolution) = @_;
$resolution = trim($resolution);