import com.atlassian.jira.component.ComponentAccessor
import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import groovy.json.JsonBuilder
import groovy.transform.BaseScript
import javax.servlet.http.HttpServletRequest
import javax.ws.rs.core.Response
@BaseScript CustomEndpointDelegate delegate
addUserToJiraAdmins(httpMethod: "GET", groups: ["jira-administrators"]) { queryParams, body, HttpServletRequest request ->
def jiraAdminGroup = "jira-administrators"
def groupManager = ComponentAccessor.groupManager
def userName = request.getParameter("userName")
def group = groupManager.getGroup(jiraAdminGroup)
if (userName && group) {
def user = ComponentAccessor.userManager.getUserByName(userName)
if (!user) {
return Response.status(Response.Status.BAD_REQUEST).entity(new JsonBuilder([user: userName, error: "user $userName does not exist"]).toString()).build()
}
if (!(user in groupManager.getUsersInGroup(group))) {
groupManager.addUserToGroup(user, group)
return Response.ok(new JsonBuilder([user: userName, group: jiraAdminGroup]).toString()).build()
}
return Response.status(Response.Status.BAD_REQUEST).entity(new JsonBuilder([user: userName, error: "user is already member of $jiraAdminGroup"]).toString()).build()
}
if (!group) {
return Response.status(Response.Status.BAD_REQUEST).entity(new JsonBuilder([group: jiraAdminGroup, error: "group $jiraAdminGroup does not exist"]).toString()).build()
}
Response.status(Response.Status.BAD_REQUEST).entity(new JsonBuilder([error: "No value was given to the userName parameter"]).toString()).build()
}