/src/main/resources/com/onresolve/jira/groovy/canned/admin/SwitchUser.groovy
Groovy | 85 lines | 68 code | 16 blank | 1 comment | 3 complexity | a89a69b5be8370917f20e6a3d9335233 MD5 | raw file
- package com.onresolve.jira.groovy.canned.admin
-
- import com.atlassian.jira.ComponentManager
- import com.atlassian.jira.ManagerFactory
- import com.atlassian.jira.config.properties.APKeys
- import com.atlassian.jira.util.ErrorCollection
- import com.atlassian.jira.util.JiraWebUtils
- import com.atlassian.jira.util.SimpleErrorCollection
- import com.atlassian.seraph.auth.DefaultAuthenticator
- import com.onresolve.jira.groovy.canned.CannedScript
- import org.apache.log4j.Category
- import com.atlassian.jira.user.util.UserUtil
- import com.atlassian.crowd.embedded.api.User
-
- public class SwitchUser implements CannedScript {
-
- public static String FIELD_USER_ID = "FIELD_USER_ID"
-
- ComponentManager componentManager = ComponentManager.getInstance()
- Category log = Category.getInstance(SwitchUser.class)
- UserUtil userUtil = componentManager.getUserUtil()
-
- public String getName() {
- "Switch to a different user"
- }
-
- List getCategories() {
- ["ADMIN"]
- }
-
- public String getDescription() {
- """Switch to another user to deal with support problems and so on.
- """
- }
-
- public String getHelpUrl() {
- null // todo
- }
-
- public List getParameters(Map params) {
- [
- [
- Name:FIELD_USER_ID,
- Label:"User ID",
- Description:"""Enter the ID of the user you want to become""",
- ],
- ]
- }
-
- public ErrorCollection doValidate(Map params, boolean forPreview) {
- ErrorCollection errorCollection = new SimpleErrorCollection()
- String targetUserId = params[FIELD_USER_ID]
- if (! targetUserId) {
- errorCollection.addError(FIELD_USER_ID, "Please enter the user ID")
- }
- else {
- // validate user plus is admin
- if (! userUtil.getUser(targetUserId)) {
- errorCollection.addError(FIELD_USER_ID, "This user does not exist")
- }
- }
-
- return errorCollection
- }
-
- Map doScript(Map params) {
-
- String targetUserId = params[FIELD_USER_ID]
- User targetUser = userUtil.getUser(targetUserId);
- JiraWebUtils.getHttpRequest().getSession().setAttribute(DefaultAuthenticator.LOGGED_IN_KEY, targetUser);
-
- ["output":"""
- Click <a href=\"${ManagerFactory.getApplicationProperties().getString(APKeys.JIRA_BASEURL)}\">here</a> to continue as <b>${targetUser.displayName}</b>.
- <br>To finish impersonating $targetUserId click Log Out.
- """]
- }
-
- String getDescription(Map params, boolean forPreview) {
- "Validation successful, click Run"
- }
-
- public Boolean isFinalParamsPage(Map params) {
- true
- }
- }