我目前在使用 JIRA 时遇到以下问题:
我创建了一个新的问题类型(比如Client-Request)和项目角色(比如Client),有没有办法限制只有项目角色“ Client ”中的用户才能创建问题“ Client-Request ”?
我尝试了以下方法:在工作流设计器中,我尝试将验证器(权限验证器)添加到步骤Create中,希望验证器可以过滤项目角色,但 JIRA 似乎没有该功能。
有没有办法解决这个问题?或者任何插件可能会有所帮助?
我目前在使用 JIRA 时遇到以下问题:
我创建了一个新的问题类型(比如Client-Request)和项目角色(比如Client),有没有办法限制只有项目角色“ Client ”中的用户才能创建问题“ Client-Request ”?
我尝试了以下方法:在工作流设计器中,我尝试将验证器(权限验证器)添加到步骤Create中,希望验证器可以过滤项目角色,但 JIRA 似乎没有该功能。
有没有办法解决这个问题?或者任何插件可能会有所帮助?
嗯,这是一个有趣的问题。我认为这目前是不可能的,因为您只能将一个权限和问题类型方案连接到任何项目。
您可以尝试在创建转换中添加 Groovy 验证器,以检查用户是否是“客户”角色的成员。
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.security.roles.ProjectRoleManager
def issue = underlyingIssue
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def projectRoleManager = ComponentAccessor.getComponentOfType(ProjectRoleManager)
def role = projectRoleManager.getProjectRole("Client")
return projectRoleManager.isUserInProjectRole(currentUser, role, issue.getProjectObject())
我能想到的另一种方法是在 Create Screen 中添加 Javascript。通过 AJAX 调用检查“客户”角色的用户成员资格。然后在创建屏幕中启用/禁用“客户端请求”问题类型。
我有以下 JS 用于检查用户的组成员身份。请为角色成员资格修改它。
function getCurrentUserName()
{
var user;
AJS.$.ajax({
url: contextPath + "/rest/gadget/1.0/currentUser",
type: 'get',
dataType: 'json',
async: false,
success: function(data) {
user = data.username;
}
});
return user;
}
function getGroups(user)
{
var groups;
AJS.$.ajax({
url: contextPath + "/rest/api/2/user?username="+user+"&expand=groups",
type: 'get',
dataType: 'json',
async: false,
success: function(data) {
groups = data.groups.items;
}
});
return groups;
}
function isUserInGroup(user, group){
var groups = getGroups(user);
for (var i = 0; i < groups.length; i++){
if (groups[i].name == group){
return true;
}
}
return false;
}
您可能必须使用:“/rest/api/2/project/{projectIdOrKey}/role”