Hi,
I am having a problem with filtering the Assign List (dropdown box) in Create / Assign Screen. I tried to accomplish this with behavior plugin but it is not working, here is the code. Please help
Regards,
BN
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.user.util.UserManager
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.security.roles.ProjectRoleManager
import com.atlassian.jira.security.roles.ProjectRole
import com.atlassian.jira.security.JiraAuthenticationContext
import com.onresolve.jira.groovy.user.FieldBehaviours
//import com.atlassian.crowd.embedded.api.User
import com.atlassian.jira.user.ApplicationUser
import org.ofbiz.core.entity.GenericValue
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.plugin.webfragment.model.JiraHelper;
import com.atlassian.jira.project.Project
import static com.atlassian.jira.issue.IssueFieldConstants.*
//import com.atlassian.crowd.embedded.api.User
import groovy.transform.BaseScript
import static com.atlassian.jira.issue.IssueFieldConstants.ASSIGNEE
import com.atlassian.jira.bc.projectroles.ProjectRoleService
JiraAuthenticationContext jiraAuthenticationContext =
ComponentManager.getComponentInstanceOfType(JiraAuthenticationContext.Class) as JiraAuthenticationContext;
ProjectRoleManager projectRoleManager =
ComponentManager.getComponentInstanceOfType(ProjectRoleManager.Class) as ProjectRoleManager;
//current project & issue
JiraHelper jiraHelper;
Issue currentIsuse = (Issue) jiraHelper.getContextParams().get("issue");
Project currentProject = currentIsuse.getProjectObject();
//current user
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser();
//name of the roles
ProjectRole bimManager = projectRoleManager.getProjectRole("BIM Manager");
ProjectRole bimOperators = projectRoleManager.getProjectRole("BIM Operators");
ProjectRole projectManager = projectRoleManager.getProjectRole("Project Manager");
ProjectRole projectMembers = projectRoleManager.getProjectRole("Project Members");
ProjectRole qsDirector = projectRoleManager.getProjectRole("QS Director");
ProjectRole qsManager = projectRoleManager.getProjectRole("QS Manager");
ProjectRole qsSurveyors = projectRoleManager.getProjectRole("QS Quantity Surveyors");
ProjectRole projectDirector = projectRoleManager.getProjectRole("Project Director");
//user list
//Set<ApplicationUser> assigneeList;
List<String> assignableList;
if (projectRoleManager.isUserInProjectRole(currentUser, bimManager, currentProject)){
def myName = currentUser.getDisplayName();
//assignable members for bimManager
def members = projectRoleManager.getProjectRoleActors(bimOperators, currentProject);
def usersInRole = members.getApplicationUsers();
for (int i = 0; i < usersInRole.size(); i ++)
{
def memberName = usersInRole[i].getDisplayName();
if (memberName != myName)
{
assignableList.add(memberName);
}
}
assignableList.add(myName);
}
//check with the dropdown
getFieldById(ASSIGNEE).setFieldOptions(assignableList);
Hi @Nguyen Q Bao,
as far as I understand, you want only users of specific roles to be assignable, right?
Did you consider to do this via permission scheme for the project, there you could change the assignable user permission to use that roles.
What I want is base on currentuser role, he is able to assign to users in roles under his control.
As above:
- BIM Manager can assign to users within BIM Operators role and himself.
- Project Manager can assign to users within Project Members role and himself.
- While the Project Director can assign to users in those Manager roles: BIM Manager, Project Manager, QS Manager.
The permission scheme does not fit my requirement since the list contains assignable users for ALL users that have assign permission.
Regards,
BN
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.