Skip to content

Instantly share code, notes, and snippets.

@ElieMalesys
Last active August 29, 2015 13:56
Show Gist options
  • Save ElieMalesys/9088552 to your computer and use it in GitHub Desktop.
Save ElieMalesys/9088552 to your computer and use it in GitHub Desktop.
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.project.Project
import com.atlassian.jira.project.ProjectManager
import com.atlassian.crowd.embedded.api.User
import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.jql.builder.JqlQueryBuilder
import com.atlassian.jira.security.roles.RoleActorFactory
import com.atlassian.jira.security.roles.RoleActor
import com.atlassian.jira.security.roles.ProjectRole
import com.atlassian.jira.security.roles.ProjectRoleActors
import com.atlassian.jira.security.roles.actor.UserRoleActorFactory
import com.atlassian.jira.security.roles.ProjectRoleManager
List<Project> giveAdminRole(List<Project> projects,User user){
ComponentManager componentManager = ComponentManager.getInstance();
ProjectRoleManager projectRoleManager = ComponentManager.getComponentInstanceOfType(ProjectRoleManager.class) as ProjectRoleManager;
RoleActorFactory roleActorFactory = ComponentManager.getComponentInstanceOfType(RoleActorFactory.class) as RoleActorFactory;
ProjectRole adminsRole = projectRoleManager.getProjectRole("Administrator");
List<Project> updatedProjects = new ArrayList<Project>();
for (project in projects){
ProjectRoleActors admins = projectRoleManager.getProjectRoleActors(adminsRole, project);
RoleActor userActor = roleActorFactory.createRoleActor(null, adminsRole.getId(), project.getId(), UserRoleActorFactory.TYPE, user.getName());
if (!admins.contains(user)){
updatedProjects.add(project);
admins = admins.addRoleActor(userActor);
projectRoleManager.updateProjectRoleActors(admins);
}
}
return updatedProjects;
}
def removeAdminRole(List<Project> projects,User user){
ComponentManager componentManager = ComponentManager.getInstance();
ProjectRoleManager projectRoleManager = ComponentManager.getComponentInstanceOfType(ProjectRoleManager.class) as ProjectRoleManager;
RoleActorFactory roleActorFactory = ComponentManager.getComponentInstanceOfType(RoleActorFactory.class) as RoleActorFactory;
ProjectRole adminsRole = projectRoleManager.getProjectRole("Administrator");
for (project in projects){
ProjectRoleActors admins = projectRoleManager.getProjectRoleActors(adminsRole, project);
RoleActor userActor = roleActorFactory.createRoleActor(null, adminsRole.getId(), project.getId(), UserRoleActorFactory.TYPE, user.getName());
admins = admins.removeRoleActor(userActor);
projectRoleManager.updateProjectRoleActors(admins);
}
}
ComponentManager componentManager = ComponentManager.getInstance()
ProjectManager projectManager = componentManager.getProjectManager()
SearchService searchService = componentManager.getSearchService()
User currentUser = componentManager.getJiraAuthenticationContext().getLoggedInUser()
def projectsList = projectManager.getProjectObjects()
List<Project> updatedProjects = giveAdminRole(projectsList,currentUser);
String display = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n'
display += '<prjList count=\"' + projectsList.size() + '\">\n'
for (project in projectsList){
def query = JqlQueryBuilder.newBuilder().where().project(project.getId()).and().updatedAfter("-183d").buildQuery()
int issueCount = searchService.searchCount(currentUser, query)
display += '\t<project name=\"' + project.getName().replace("&","&amp;") + '\" key=\"' + project.getKey() + '\" lead=\"' + project.getLead().getEmailAddress() +'\" issuesUpdatedRecently=\"' + issueCount + '\"/>\n'
}
display += '</prjList>\n'
removeAdminRole(updatedProjects,currentUser);
return display
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment