We have 10 projects and we want them to have a scriptrunner job every day to synchronize all users with their project roles so it would be same. I tried to write a script but it did not work for us. Could you please help?
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.Project
import com.atlassian.jira.security.roles.ProjectRole
import com.atlassian.jira.security.roles.ProjectRoleManager
import com.atlassian.jira.user.ApplicationUser
def projectManager = ComponentAccessor.projectManager
def projectRoleManager = ComponentAccessor.getComponent(ProjectRoleManager)
def projectKeys = ['PROJECT1', 'PROJECT2']
def projects = projectKeys.collect { projectManager.getProjectByCurrentKey(it) }
def assignUserToRoleInProject(ApplicationUser user, ProjectRole role, Project project) {
if (!projectRoleManager.isUserInProjectRole(user, role, project)) {
projectRoleManager.addActorToProjectRole(user, role, project)
}
}
projects.each { Project project ->
projectRoleManager.getProjectRoles().each { ProjectRole role ->
def currentMembers = projectRoleManager.getProjectRoleActors(role, project).getApplicationUsers()
currentMembers.each { ApplicationUser user ->
projects.each { Project targetProject ->
if (targetProject != project) {
assignUserToRoleInProject(user, role, targetProject)
}
}
}
}
}
return "Sync keys: ${projectKeys.join(', ')}"