Hello,
i am trying to activate a user using Scriptrunner API endpoint method but i am getting an error . The below code is just for the test using GET method . please help . the eerror i am getting is in the bold . I am trying this in both jira 6 and jira 7.
import com.atlassian.crowd.embedded.api.CrowdService
import com.atlassian.crowd.embedded.api.User
import com.atlassian.crowd.embedded.api.UserWithAttributes
import com.atlassian.crowd.embedded.impl.ImmutableUser
import com.atlassian.jira.bc.user.UserService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.user.util.UserUtil
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.user.ApplicationUsers
import groovy.json.JsonBuilder
import groovy.transform.BaseScript
import javax.servlet.http.HttpServletRequest
import javax.ws.rs.core.Response
import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import org.apache.log4j.Level
import org.apache.log4j.Logger
@BaseScript CustomEndpointDelegate delegate
Uactivate (httpMethod: "GET" , groups: ["jira-administrators"])
{ queryParams, body, HttpServletRequest request ->
def userName = request.getParameter("userName")
if (userName)
{
def jiraUserManager = ComponentAccessor.getUserManager()
def user = jiraUserManager.getUserByName(userName)
if(!user)
{
return Response.noContent().build()
}
ImmutableUser.newUser(user).active(false).toUser()
return Response.ok(new JsonBuilder([user: userName]).toString()).build()
}
else
return Response.noContent().build()
}
Abyakta
Hi Abyakta,
You seem to be using a mix of the Crowd API and the JIRA API. I am not sure if this is what you want, but this seems to work for me to activate a user using a given username:
import com.atlassian.jira.bc.user.ApplicationUserBuilderImpl
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
Uactivate (httpMethod: "GET" , groups: ["jira-administrators"])
{ queryParams, body, HttpServletRequest request ->
def userName = request.getParameter("userName")
if (userName)
{
def jiraUserManager = ComponentAccessor.getUserManager()
def user = jiraUserManager.getUserByName(userName)
if(!user)
{
return Response.noContent().build()
}
jiraUserManager.updateUser(new ApplicationUserBuilderImpl(user).active(true).build())
return Response.ok(new JsonBuilder([user: userName]).toString()).build()
}
else
return Response.noContent().build()
}
Hi Joshua,
Thanks for reverting back and correcting me. Your answer works perfectly with jira ver 7 .
We have two JIRA one with 7.2 and another with version 6.4 .for version 6.4 below code will not work .
import com.atlassian.jira.bc.user.ApplicationUserBuilderImp
jiraUserManager.updateUser(new ApplicationUserBuilderImpl(user).active(true).build()).
Can you please help.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
hi,
what maven dependency did you add to have ApplicationUserBuilderImpl available?
thx in advance.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.