private void checkTransitionPermission( String transitionKey, UserSession userSession, DefaultIssue defaultIssue) { List<Transition> outTransitions = workflow.outTransitions(defaultIssue); for (Transition transition : outTransitions) { String projectKey = defaultIssue.projectKey(); if (transition.key().equals(transitionKey) && StringUtils.isNotBlank(transition.requiredProjectPermission()) && projectKey != null) { userSession.checkComponentPermission(transition.requiredProjectPermission(), projectKey); } } }
/** * Never return null, but an empty list if the issue does not exist. No security check is done * since it should already have been done to get the issue */ public List<Transition> listTransitions(@Nullable Issue issue) { if (issue == null) { return Collections.emptyList(); } List<Transition> outTransitions = workflow.outTransitions(issue); List<Transition> allowedTransitions = new ArrayList<>(); for (Transition transition : outTransitions) { String projectUuid = issue.projectUuid(); if (userSession.isLoggedIn() && StringUtils.isBlank(transition.requiredProjectPermission()) || (projectUuid != null && userSession.hasComponentUuidPermission( transition.requiredProjectPermission(), projectUuid))) { allowedTransitions.add(transition); } } return allowedTransitions; }