Как я могу аутентифицироваться при использовании Bugzilla Perl API в скрипте? - PullRequest
4 голосов
/ 05 мая 2010

Работая с Bugzilla API , я написал быстрый Perl-скрипт для клонирования Продукта Bugzilla (воссоздания всех Компонентов под их новым Продуктом). Bugzilla Perl API довольно прост в использовании из командной строки. Я мог бы просто поработать с базой данных напрямую, но я хотел найти более долгосрочное решение. Другим вариантом был веб-сервис, но я подумал, что на этот раз я попытаюсь использовать API напрямую.

Единственная проблема, с которой я сталкиваюсь, - это аутентификация моего пользователя Bz-администратора, чтобы я мог создавать новые компоненты. Глядя на файл Bugzilla.pm в Bugzilla, я вижу, что они просто запускают login() из Bugzilla :: Auth объекта. Я не уверен, как получить имя пользователя и пароль там. Полагаю, я мог бы просто добавить скрипт в интерфейс администратора Bugzilla ...

Кто-нибудь из вас может указать мне правильное направление?

Ответы [ 3 ]

2 голосов
/ 05 мая 2010

О, я сегодня довольно невежественен, я сосредоточился на "веб-сервисах" и не понял, чего вы на самом деле хотели.

Если вы просто используете API для связи с базой данных (в отличие от манипулирования базой данных напрямую), вам действительно нужно аутентифицироваться как любой пользователь?

В исходном дереве 3.2, например, посмотрите на merge-users.pl, который использует Bugzilla::User объекты. Не могли бы вы сделать то же самое с Bugzilla::Component?

Вы также должны посмотреть на sanitycheck.pl, который использует Bugzilla->set_user.

2 голосов
/ 05 мая 2010

С версии 3.2 произошли значительные улучшения в возможностях веб-сервисов. Можете ли вы обновить?

По крайней мере, в версии 3.6 проверьте contrib/bz_webservice_demo.pl, как использовать метод User.login.

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

1 голос
/ 14 марта 2012

Следующий фрагмент кода может ввести вопрос. Здесь мы также проверяем, что пользователь имеет правильные учетные данные "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"});
...