summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/User/APIKey.pm6
-rwxr-xr-xscripts/issue-api-key.pl11
2 files changed, 15 insertions, 2 deletions
diff --git a/Bugzilla/User/APIKey.pm b/Bugzilla/User/APIKey.pm
index d89203e68..500f0ad59 100644
--- a/Bugzilla/User/APIKey.pm
+++ b/Bugzilla/User/APIKey.pm
@@ -88,6 +88,12 @@ sub _check_app_id {
return $app_id;
}
+
+sub create_special {
+ my ($class, @args) = @_;
+ local VALIDATORS->{api_key} = sub { return $_[1] };
+ return $class->create(@args);
+}
1;
__END__
diff --git a/scripts/issue-api-key.pl b/scripts/issue-api-key.pl
index 35abb9200..334cddeaa 100755
--- a/scripts/issue-api-key.pl
+++ b/scripts/issue-api-key.pl
@@ -22,19 +22,26 @@ use Bugzilla::User::APIKey;
Bugzilla->usage_mode(USAGE_MODE_CMDLINE);
my $login = shift
- or die "syntax: $0 bugzilla-login [description]\n";
+ or die "syntax: $0 bugzilla-login [description] [api key]\n";
my $description = shift;
+my $given_api_key = shift;
+my $api_key;
my $user = Bugzilla::User->check({ name => $login });
my $params = {
user_id => $user->id,
description => $description,
+ api_key => $given_api_key,
};
if ($description && $description eq 'mozreview') {
$params->{app_id} = Bugzilla->params->{mozreview_app_id} // '';
}
-my $api_key = Bugzilla::User::APIKey->create($params);
+if ($given_api_key) {
+ $api_key = Bugzilla::User::APIKey->create_special($params);
+} else {
+ $api_key = Bugzilla::User::APIKey->create($params);
+}
say $api_key->api_key;