简体   繁体   中英

How can I authenticate when using the Bugzilla Perl API in a script?

Working from the Bugzilla API , I've written a quick Perl script to clone a Bugzilla Product (recreating all the Components under their new Product). The Bugzilla Perl API is quite easy to use from the command line. I could have just worked on the database directly, but I wanted a longer-term solution. Another option was the webservice, but I thought I'd try using the API directly this time.

The one problem I'm running into is authenticating as my Bz admin user so I can create the new components. Looking at Bugzilla's Bugzilla.pm file, I see that they just run login() from a Bugzilla::Auth object. I'm not sure how to get the username and password in there. I suppose I could just add the script to the Bugzilla admin interface...

Can any of you point me in the right direction?

There's been some significant upgrades in the web services capabilities since 3.2, can you upgrade?

In 3.6 at least, check out contrib/bz_webservice_demo.pl for how to use the User.login method.

http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/User.html

Oh, I'm being rather ignorant today, I focused on "web services" and didn't understand what you really wanted.

If you're just using the API to communicate with the database (as opposed to manipulating the database directly), do you really need to authenticate as any user at all?

In the 3.2 source tree, look at merge-users.pl for instance, which uses Bugzilla::User objects. Couldn't you do the same with Bugzilla::Component ?

You should also look at sanitycheck.pl , which uses Bugzilla->set_user .

The following code snippet might enter the question. Here we check also that the user has the correct "editcomponents" credential.

my $user = new Bugzilla::User({ name => $login })
  || ThrowUserError('invalid_username', { name => $login });


# Authenticate using this user account.
Bugzilla->set_user($user);
$user->in_group('editcomponents')
      || ThrowUserError("auth_failure", {group  => "editcomponents",
                                         action => "add",
                                         object => "products"});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM