如何在脚本中使用Bugzilla Perl API时进行身份验证?

时间:2010-05-04 22:49:19

标签: perl authentication bugzilla

Bugzilla API工作时,我编写了一个快速的Perl脚本来克隆Bugzilla产品(在新产品下重新创建所有组件)。 Bugzilla Perl API在命令行中非常容易使用。我本可以直接在数据库上工作,但我想要一个更长期的解决方案。另一种选择是webservice,但我想我这次尝试直接使用API​​。

我遇到的一个问题是作为我的Bz管理员用户进行身份验证,因此我可以创建新的组件。看看Bugzilla的Bugzilla.pm文件,我发现它们只是从Bugzilla::Auth对象运行login()。我不知道如何获取用户名和密码。我想我可以将脚本添加到Bugzilla管理界面...

你们有没有人能指出我正确的方向?

3 个答案:

答案 0 :(得分:2)

自3.2以来,Web服务功能已经有了一些重大升级,你能升级吗?

至少在3.6中,请查看contrib/bz_webservice_demo.pl了解如何使用User.login方法。

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

答案 1 :(得分:2)

哦,我今天很无知,我专注于“网络服务”而且不明白你真正想要的是什么。

如果您只是使用API​​与数据库进行通信(而不是直接操作数据库),您是否真的需要以任何用户身份进行身份验证?

在3.2源代码树中,例如查看merge-users.pl,它使用Bugzilla::User个对象。你不能对Bugzilla::Component做同样的事情吗?

您还应该查看使用sanitycheck.pl的{​​{1}}。

答案 2 :(得分:1)

以下代码段可能会输入问题。 在这里,我们还检查用户是否具有正确的“editcomponents”凭证。

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"});