我们需要为bugzilla中的一个部署提供解决方案。
我们的方案示例如下:
组:员工,学生
项目/产品错误:projectA,projectB
我们需要知道有没有办法:
1)限制用户组访问项目。
Example= Students cannot access or view bugs in projectA.
2)限制其他用户组确认或更改错误状态
Example= Students cannot change the bug status of projectB from NEW to RESOLVED
3)某些成员组的组只能提交错误但不能关闭文件
Example= StaffA can only file a bug in ProjectA but cannot closed it whereas StaffB can file the bug and also can close the bug
从我的搜索/谷歌,没有可用的文档可以解释bugzilla中的这个功能。但也许我忽略了某种方式。 我们当前的bugzilla是版本 3.2rc1
提前致谢。
答案 0 :(得分:1)
您并未真正说出您使用的是哪个版本的Bugzilla,因此这些网址适用于最新版本4.2。但是,相同的概念适用于最新版本。例如,我们使用3.6并控制某些用户是否可以按照我在下面描述的相同方式更改某些内容。
1)限制不在群组中的用户看到错误是Bugzilla的群组安全所做的事情:
http://www.bugzilla.org/docs/4.2/en/html/groups.html
在您的案例中,一个问题是群组安全控制正面访问而不是负面访问。也就是说,它允许指定哪些组可以查看产品中的错误而不是不能的组。要让students
的成员无法查看projectA
中的错误,您需要拥有一个可以访问projectA
的群组,并设法让用户免于students
那个小组。
或者,您可以将一些自定义代码放入Bugzilla::User::can_see_bug
,Bugzilla::User::visible_bugs
或Bugzilla::Bug::check_is_visible
,以更加牢固地控制群组students
中的用户永远不会查看projectA
2)您可以在允许更改时运用很多粒度:
http://www.bugzilla.org/docs/4.2/en/html/cust-change-permissions.html
我们做这样的事情。除非我们明确允许读写访问,否则我们有一组用户要向其授予只读访问权限。为此,我们根据电子邮件地址为这些用户提供了一个名为allspecialusers
的组。我们还有另一个名为approved_specialusers
的组,其中一些用户是手动添加的。
因此,在我们的Bugzilla::Bug::check_can_change_field
中,我们的代码如下:
if ($user->in_group('specialusers') && !$user->in_group('approved_specialusers')) { $$PrivilegesRequired = 3; return 0; }
您可以通过检查错误是否在产品projectB
中并且尝试进行更改的用户是否在组students