Skip to content

Instantly share code, notes, and snippets.

@jechlin
Last active August 29, 2015 13:56
Show Gist options
  • Save jechlin/9081685 to your computer and use it in GitHub Desktop.
Save jechlin/9081685 to your computer and use it in GitHub Desktop.
package examples.usermgr
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
/* CONFIGURABLE SECTION */
// custom field names
final def userNameField = "Username"
final def passwordField = "Password"
final def displayNameField = "Display Name"
final def emailField = "E-Mail"
// default groups
final List<String> defaultGroups = ['jira-users', 'jira-developers']
/* END CONFIGURABLE SECTION */
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def issueManager = ComponentAccessor.getIssueManager()
def issue = issue as Issue
def customFields = customFieldManager.getCustomFieldObjects(issue)
def username = issue.getCustomFieldValue(customFields.find {it.name == userNameField}) as String
def password = issue.getCustomFieldValue(customFields.find {it.name == passwordField}) as String
def displayName = issue.getCustomFieldValue(customFields.find {it.name == displayNameField}) as String
def email = issue.getCustomFieldValue(customFields.find {it.name == emailField}) as String
def userUtil = ComponentAccessor.getUserUtil()
def user = userUtil.createUserNoNotification(username, password, email, displayName)
defaultGroups.each {groupName ->
def group = userUtil.getGroupObject(groupName)
assert group // require all default groups to exist
userUtil.addUserToGroup(group, user)
}
def currentUserName = ComponentAccessor.getJiraAuthenticationContext()?.user?.name
assert currentUserName // this transition must be done by a user, not anonymously
def currentUserGroups = userUtil.getGroupsForUser(currentUserName)
userUtil.addUserToGroups(currentUserGroups, user)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment