PageRenderTime 59ms CodeModel.GetById 8ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/resources/com/onresolve/jira/groovy/canned/admin/SwitchUser.groovy

https://bitbucket.org/sorin/jira-plugin-intellij
Groovy | 85 lines | 68 code | 16 blank | 1 comment | 3 complexity | a89a69b5be8370917f20e6a3d9335233 MD5 | raw file
  1. package com.onresolve.jira.groovy.canned.admin
  2. import com.atlassian.jira.ComponentManager
  3. import com.atlassian.jira.ManagerFactory
  4. import com.atlassian.jira.config.properties.APKeys
  5. import com.atlassian.jira.util.ErrorCollection
  6. import com.atlassian.jira.util.JiraWebUtils
  7. import com.atlassian.jira.util.SimpleErrorCollection
  8. import com.atlassian.seraph.auth.DefaultAuthenticator
  9. import com.onresolve.jira.groovy.canned.CannedScript
  10. import org.apache.log4j.Category
  11. import com.atlassian.jira.user.util.UserUtil
  12. import com.atlassian.crowd.embedded.api.User
  13. public class SwitchUser implements CannedScript {
  14. public static String FIELD_USER_ID = "FIELD_USER_ID"
  15. ComponentManager componentManager = ComponentManager.getInstance()
  16. Category log = Category.getInstance(SwitchUser.class)
  17. UserUtil userUtil = componentManager.getUserUtil()
  18. public String getName() {
  19. "Switch to a different user"
  20. }
  21. List getCategories() {
  22. ["ADMIN"]
  23. }
  24. public String getDescription() {
  25. """Switch to another user to deal with support problems and so on.
  26. """
  27. }
  28. public String getHelpUrl() {
  29. null // todo
  30. }
  31. public List getParameters(Map params) {
  32. [
  33. [
  34. Name:FIELD_USER_ID,
  35. Label:"User ID",
  36. Description:"""Enter the ID of the user you want to become""",
  37. ],
  38. ]
  39. }
  40. public ErrorCollection doValidate(Map params, boolean forPreview) {
  41. ErrorCollection errorCollection = new SimpleErrorCollection()
  42. String targetUserId = params[FIELD_USER_ID]
  43. if (! targetUserId) {
  44. errorCollection.addError(FIELD_USER_ID, "Please enter the user ID")
  45. }
  46. else {
  47. // validate user plus is admin
  48. if (! userUtil.getUser(targetUserId)) {
  49. errorCollection.addError(FIELD_USER_ID, "This user does not exist")
  50. }
  51. }
  52. return errorCollection
  53. }
  54. Map doScript(Map params) {
  55. String targetUserId = params[FIELD_USER_ID]
  56. User targetUser = userUtil.getUser(targetUserId);
  57. JiraWebUtils.getHttpRequest().getSession().setAttribute(DefaultAuthenticator.LOGGED_IN_KEY, targetUser);
  58. ["output":"""
  59. Click <a href=\"${ManagerFactory.getApplicationProperties().getString(APKeys.JIRA_BASEURL)}\">here</a> to continue as <b>${targetUser.displayName}</b>.
  60. <br>To finish impersonating $targetUserId click Log Out.
  61. """]
  62. }
  63. String getDescription(Map params, boolean forPreview) {
  64. "Validation successful, click Run"
  65. }
  66. public Boolean isFinalParamsPage(Map params) {
  67. true
  68. }
  69. }