4

通过使用Bugzilla API,我编写了一个快速的 Perl 脚本来克隆一个 Bugzilla 产品(在他们的新产品下重新创建所有组件)。Bugzilla Perl API 很容易从命令行使用。我本可以直接在数据库上工作,但我想要一个长期的解决方案。另一个选择是网络服务,但我想这次我会尝试直接使用 API。

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

你们中的任何人都可以指出我正确的方向吗?

4

3 回答 3

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

于 2010-05-05T00:36:14.070 回答
2

哦,我今天比较无知,我专注于“网络服务”,不明白你真正想要什么。

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

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

您还应该查看sanitycheck.pl使用Bugzilla->set_user.

于 2010-05-05T01:34:19.307 回答
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"});
于 2012-03-14T13:37:21.620 回答