2015-04-20 68 views
0

我想在不同用戶登錄jira時顯示或隱藏插件。 我有treed ComponentManager和PluginAccessor和許多類/接口,但沒有運氣。爲jira atlassian啓用用戶插件

如何通過jira的api來做到這一點。

+0

請提供一些你已經嘗試過的代碼/解釋。 – Jordumus

+0

它是你的插件或市場插件? –

+0

我的自定義插件,我想爲選定的用戶顯示?我也使用SimpleLinkFactory,但鏈接不會重定向到我的自定義插件 –

回答

0

完成。

在Atlassian的-plugin.xml中,提供網絡項目一樣的條件,

<conditions type="OR"> 
     <condition 
      class="com.atlassian.jira.plugin.webfragment.conditions.JiraGlobalPermissionCondition"> 
      <param name="permission">admin</param> 
     </condition> 
     <condition 
      class="in.componence.jira.plugin.condition.UserLoggedInIsInGroupCondition"> 
     </condition> 
    </conditions> 

在UserLoggedInIsInGroupCondition,

public class UserLoggedInIsInGroupCondition extends UserLoggedInCondition { 

private final UserManager userManager; 
PropertySet propertySet = ComponentAccessor.getComponent(PropertiesManager.class).getPropertySet(); 
Connection conn = null; 
Statement stmt = null; 
ResultSet rs = null; 

public UserLoggedInIsInGroupCondition(UserManager userManager) { 
    this.userManager = userManager; 
} 

public boolean shouldDisplay(com.atlassian.crowd.embedded.api.User user, 
     JiraHelper jiraHelper) { 

    if(user != null){ 

     try { 
      conn = new DefaultOfBizConnectionFactory().getConnection(); 
      stmt = conn.createStatement(); 
      String userName = user.getDisplayName(); 
      String sql = "select PARENT_NAME from cwd_membership where CHILD_NAME='"+userName.toLowerCase()+"'"; 
      ResultSet rs = stmt.executeQuery(sql); 
      while(rs.next()){ 
       String rsGU = rs.getString("PARENT_NAME")+":"+user.getDisplayName(); 
       String str = propertySet.getString("partner.groupuser"); 
       str = str.replace("[", ""); 
       str = str.replace("]", ""); 
       String[] arrGU = str.split(","); 
       for(int i=0; i<arrGU.length; i++){ 
        if(rsGU.trim()==arrGU[i].trim() || rsGU.trim().equals(arrGU[i].trim())){ 

         return true; 
        } 
       } 
      } 
     } catch (DataAccessException e) { 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     }finally{ 
       try { 
        if(conn!=null){ conn.close(); } 
        if(stmt!=null){ stmt.close(); } 
        if(rs!=null){ rs.close(); } 
       } catch (SQLException e) { 
        e.printStackTrace(); 
       } 
     } 
    } 

    return (super.shouldDisplay(user, jiraHelper) && (userManager 
      .isUserInGroup(user.getName(), DataSourceUtil.GROUP_NAME))); 
} 

}

然後在你的主servlet類給予插件訪問到選定的用戶。

+0

此代碼有一個明顯的「Bobby Tables」安全漏洞。 (https://xkcd.com/327/)。 –

相關問題