【问题标题】:Create Issue based on Project Role根据项目角色创建问题
【发布时间】:2012-11-27 03:39:06
【问题描述】:

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

我创建了一个新的问题类型(比如 Client-Request)和项目角色(比如 Client),有没有办法只限制项目角色中的用户'Client' 可以创建问题'Client-Request'?

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

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

【问题讨论】:

    标签: jira jira-plugin


    【解决方案1】:

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

    尝试通过https://answers.atlassian.com/ 提问。

    【讨论】:

      【解决方案2】:

      您可以尝试在创建转换中添加一个 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"

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-20
        • 2010-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多