script field update only jiraadmin

Vijay Sridhar April 7, 2016

Hi,

we are having a custom field , based on that we are sending mail & updating the customfield via script runner , but sometimes if user manually update the customfield our scriptrunner not able to send email ,is there any option available in scriptedfield to  check that scripted customfield can be updated only by Jiraadmins ?.

Customfield update is not done based on transition , scriptrunner script executes as Jiraadmin user .

 

2 answers

1 accepted

1 vote
Answer accepted
Thanos Batagiannis _Adaptavist_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
April 7, 2016

Hi vijay,

So you ask if there is a way to add a "condition" in the scripted field to check if the user who updates the issue, (and the updated field is 'connected' with scripted field) is an admin user. Unfortunately you cannot do that in your - responsible for the scripted field - script. Also the scripted fields cannot be updated directly but only via the fields that are 'connected' to it.

Therefore your question and please correct me if I am wrong, is how to allow only admins to edit specific fields in an issue and again this is not possible.
A workaround I can think is to associate a behaviour to the "suspicious" fields and make them read only if the user is not an administrator, for example

import com.atlassian.jira.component.ComponentAccessor
def groupManager = ComponentAccessor.getGroupManager()
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def field = getFieldByName("a field name")
field.setReadOnly(true)
if (groupManager.isUserInGroup(currentUser, "jira-administrators")) {
    field.setReadOnly(false)
}

Hope that helps, somehow...
Regards

 

1 vote
Kristian Walker _Adaptavist_
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
April 8, 2016

Hi Vijay,

I have enclosed below a sample Behaviour script which can be applied to the field read only. The script will check to see if the current user is in a group such as the jira-administrators group and if the user is in the administrators group then it will make the field writeable else it will be read only for all other users.

Below I have attached the code and config needed.

This code was developed and tested on JIRA 6.4.12 using ScriptRunner 4.1.3.10.

Code:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.user.util.UserUtil
  
// Get pointers to the custom field(s) required
def cf = getFieldByName("Demo Text Field")
  
// Get the current logged in user
def user = ComponentAccessor.getJiraAuthenticationContext().getUser().name
  
// Get a pointer to the admin group
UserUtil userUtil = ComponentAccessor.getUserUtil()
def group =  userUtil.getGroupObject("jira-administrators")
  
// By default make the field read only
    cf.setReadOnly(true)
  
if(userUtil.getGroupsForUser(user).contains(group)){
 // If the user is in the restricted groups field then show the field(s)
    cf.setReadOnly(false)
}

 

Config:

image2016-4-8 11:20:51.png

I hope this helps.

Kristian



Vijay Sridhar April 10, 2016

Thanks @Kristian Walker (Adaptavist)

Suggest an answer

Log in or Sign up to answer