1 package com.atlassian.jira.workflow.condition;
2
3 import java.util.Map;
4
5 import com.atlassian.jira.ManagerFactory;
6 import com.atlassian.jira.issue.Issue;
7 import com.atlassian.jira.security.PermissionManager;
8 import com.atlassian.jira.security.Permissions;
9 import com.opensymphony.module.propertyset.PropertySet;
10 import com.opensymphony.user.User;
11
12
13
14
15
16
17
18
19 public class GlobalPermissionCondition extends AbstractJiraCondition {
20
21 public boolean passesCondition(Map transientVars, Map args, PropertySet ps) {
22 boolean hasPermission = false;
23 PermissionManager permissionManager = ManagerFactory.getPermissionManager();
24 String permName = (String) args.get("permission");
25 int permissionId = Permissions.getType(permName);
26
27 User caller = getCaller(transientVars, args);
28 if (Permissions.isGlobalPermission(permissionId)) {
29 hasPermission =permissionManager.hasPermission(permissionId, caller);
30 } else {
31 Issue issue = getIssue(transientVars);
32 hasPermission =permissionManager.hasPermission(permissionId, issue.getGenericValue(), caller);
33 }
34
35 return hasPermission;
36 }
37 }