根据项目角色创建问题

时间:2012-11-27 03:39:06

标签: jira jira-plugin

使用JIRA时,我目前遇到以下问题:

我创建了一个新的问题类型(比如说客户端请求)和项目角色(比如说客户端),有没有办法只限制项目角色的用户'< strong>客户'可以创建问题'客户请求'?

我尝试过以下方法: 在工作流设计器中,我尝试将验证器(权限验证程序)添加到步骤创建,希望验证程序可以过滤项目角色,但JIRA似乎没有该功能。

有没有办法解决这个问题?或任何插件可能会有所帮助?

2 个答案:

答案 0 :(得分:0)

这是一个有趣的问题。我认为目前这是不可能的,因为您只能将一个权限和问题类型方案连接到任何项目。

尝试在https://answers.atlassian.com/处提出您的问题。

答案 1 :(得分:0)

您可以尝试在“创建”过渡中添加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())

我可以想到的另一种方法是在“创建屏幕”中添加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} /角色”

请参阅https://docs.atlassian.com/DAC/rest/jira/6.1.html