Class ProjectRoleSecurityAndNotificationType
java.lang.Object
com.atlassian.jira.security.type.AbstractSecurityType
com.atlassian.jira.security.type.AbstractProjectsSecurityType
com.atlassian.jira.notification.type.ProjectRoleSecurityAndNotificationType
- All Implemented Interfaces:
NotificationType
,SchemeType
,SecurityType
public class ProjectRoleSecurityAndNotificationType
extends AbstractProjectsSecurityType
implements NotificationType, SecurityType
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionProjectRoleSecurityAndNotificationType
(JiraAuthenticationContext jiraAuthenticationContext, ProjectRoleManager projectRoleManager, ProjectFactory projectFactory) -
Method Summary
Modifier and TypeMethodDescriptionboolean
doValidation
(String key, Map parameters) Validate the configuration (the argument inNotificationType.getRecipients(com.atlassian.jira.event.issue.IssueEvent, String)
) when it is entered in the "Add Notification" page.void
doValidation
(String key, Map parameters, JiraServiceContext jiraServiceContext) getArgumentDisplay
(String roleTypeId) Obtains the user-friendly display for the argument.getArgumentValue
(String roleTypeId) Obtains the raw parameter value to save for the given user entry user-friendly display value.Text to display for this type, on the "Add Notification" page.Set<org.apache.lucene.util.BytesRef>
getPermissionFieldContents
(ApplicationUser searcher, Project project, IssueSecurityLevel securityLevel, String parameter) Returns a set of (issue level permission field
) contents based on the security level, the project and optionally the parameter (for role-based queries).getRecipients
(IssueEvent event, String roleId) Who is to be notified of an event.getType()
Type identifier (currently unused).getUsers
(PermissionContext permissionContext, String roleId) Returns a set ofApplicationUser
s represented by a security type instance.protected Set<ApplicationUser>
getUsersFromRole
(Project project, String roleId) Get all the users that satisfy this particular role.boolean
hasPermission
(Issue issue, String parameter) Determines if this permission type is satisfied for anonymous access.boolean
hasPermission
(Issue issue, String parameter, ApplicationUser user, boolean issueCreation) Determines if this permission type is satisfied.boolean
hasPermission
(Project project, String argument) Determines if this permission type is satisfied for anonymous access.boolean
hasPermission
(Project project, String argument, ApplicationUser user, boolean issueCreation) Determines if this permission type is satisfied.boolean
Returns true if this permission depends only on a issue security level value and not on project or any field value.Methods inherited from class com.atlassian.jira.security.type.AbstractProjectsSecurityType
getPermissionFieldContents, getPermissionFieldContents, isTopLevelProjectPermission
Methods inherited from class com.atlassian.jira.security.type.AbstractSecurityType
isValidForPermission
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.atlassian.jira.scheme.SchemeType
isValidForPermission
Methods inherited from interface com.atlassian.jira.security.type.SecurityType
getPermissionFieldContents, getUsers, isTopLevelProjectPermission
-
Field Details
-
PROJECT_ROLE
- See Also:
-
-
Constructor Details
-
ProjectRoleSecurityAndNotificationType
public ProjectRoleSecurityAndNotificationType(JiraAuthenticationContext jiraAuthenticationContext, ProjectRoleManager projectRoleManager, ProjectFactory projectFactory)
-
-
Method Details
-
isTopLevelIssueSecurityPermission
public boolean isTopLevelIssueSecurityPermission()Description copied from interface:SecurityType
Returns true if this permission depends only on a issue security level value and not on project or any field value. Used for optimisation.- Specified by:
isTopLevelIssueSecurityPermission
in interfaceSecurityType
- Overrides:
isTopLevelIssueSecurityPermission
in classAbstractProjectsSecurityType
-
getPermissionFieldContents
public Set<org.apache.lucene.util.BytesRef> getPermissionFieldContents(ApplicationUser searcher, Project project, IssueSecurityLevel securityLevel, String parameter) Description copied from interface:SecurityType
Returns a set of (issue level permission field
) contents based on the security level, the project and optionally the parameter (for role-based queries). This is needed to build issue security level query.- Specified by:
getPermissionFieldContents
in interfaceSecurityType
- Overrides:
getPermissionFieldContents
in classAbstractProjectsSecurityType
- Parameters:
searcher
- The searcher conducting the searchproject
- The project for which we're constructing a querysecurityLevel
- The security level for which we are constructing the permissions field contentsparameter
- Parameter identifying user related field (reporter, assignee, etc)- Returns:
- A set of Lucene permissions field tuples
- See Also:
-
getProjectRoles
-
getDisplayName
Description copied from interface:NotificationType
Text to display for this type, on the "Add Notification" page.- Specified by:
getDisplayName
in interfaceNotificationType
- Specified by:
getDisplayName
in interfaceSchemeType
- Returns:
- (Internationalized) text to display, eg. "Group".
-
getType
Description copied from interface:NotificationType
Type identifier (currently unused).- Specified by:
getType
in interfaceNotificationType
- Specified by:
getType
in interfaceSchemeType
- Returns:
- Eg. "group"
-
doValidation
- Specified by:
doValidation
in interfaceSchemeType
-
doValidation
Description copied from interface:NotificationType
Validate the configuration (the argument inNotificationType.getRecipients(com.atlassian.jira.event.issue.IssueEvent, String)
) when it is entered in the "Add Notification" page. For instance, a group notification type might check if the entered group exists.- Specified by:
doValidation
in interfaceNotificationType
- Parameters:
key
- Key of relevant value in parametersparameters
- HTML form parameters (only the keyed entry is relevant).- Returns:
- Whether the entered value is valid for this type.
-
getArgumentDisplay
Description copied from interface:NotificationType
Obtains the user-friendly display for the argument. For example, returns a username for a key.- Specified by:
getArgumentDisplay
in interfaceNotificationType
- Specified by:
getArgumentDisplay
in interfaceSecurityType
- Overrides:
getArgumentDisplay
in classAbstractSecurityType
- Parameters:
roleTypeId
- Raw configuration value- Returns:
- Formatted configuration value.
-
getArgumentValue
Description copied from interface:NotificationType
Obtains the raw parameter value to save for the given user entry user-friendly display value. For example, the user picker displays a username, but this needs to be stored in the configuration parameter as the user's key, instead.- Specified by:
getArgumentValue
in interfaceNotificationType
- Parameters:
roleTypeId
- Value entered into the form (username, for example)- Returns:
- raw configuration value.
-
getUsers
Description copied from interface:SecurityType
Returns a set ofApplicationUser
s represented by a security type instance. The collection must not contain any nulls.- Specified by:
getUsers
in interfaceSecurityType
- Parameters:
permissionContext
- The current issue and projectroleId
- Instance value, eg. a group name, user name, custom field id- Returns:
- A set of
ApplicationUser
s.
-
hasPermission
Description copied from interface:SchemeType
Determines if this permission type is satisfied for anonymous access.- Specified by:
hasPermission
in interfaceSchemeType
- Parameters:
project
- This is the project that the security is being checked forargument
- If this particular SchemeType has been configured with a parameter, then this parameter is passed (eg. Group Name forGroupDropdown
)- Returns:
- true if anonymous Users have this permission.
-
hasPermission
Description copied from interface:SchemeType
Determines if this permission type is satisfied for anonymous access.- Specified by:
hasPermission
in interfaceSchemeType
- Parameters:
issue
- This is the issue that the security is being checked forparameter
- If this particular SchemeType has been configured with a parameter, then this parameter is passed (eg. Group Name forGroupDropdown
)- Returns:
- true if anonymous Users have this permission.
-
hasPermission
public boolean hasPermission(Project project, String argument, ApplicationUser user, boolean issueCreation) Description copied from interface:SchemeType
Determines if this permission type is satisfied.- Specified by:
hasPermission
in interfaceSchemeType
- Parameters:
project
- This is the project that the security is being checked forargument
- If this particular SchemeType has been configured with a parameter, then this parameter is passed (eg. Group Name forGroupDropdown
)user
- The user for whom the permission is being checkedissueCreation
- Whether this permission is being checked during issue creation- Returns:
- true if the given User has this permission.
-
hasPermission
public boolean hasPermission(Issue issue, String parameter, ApplicationUser user, boolean issueCreation) Description copied from interface:SchemeType
Determines if this permission type is satisfied.- Specified by:
hasPermission
in interfaceSchemeType
- Parameters:
issue
- This is the issue that the security is being checked forparameter
- If this particular SchemeType has been configured with a parameter, then this parameter is passed (eg. Group Name forGroupDropdown
)user
- The user for whom the permission is being checkedissueCreation
- Whether this permission is being checked during issue creation- Returns:
- true if the given User has this permission.
-
getRecipients
Description copied from interface:NotificationType
Who is to be notified of an event.- Specified by:
getRecipients
in interfaceNotificationType
- Parameters:
event
- The event, eg. issue createdroleId
- Configuration from notification scheme, eg. group name, custom field id.- Returns:
- A list of
NotificationRecipient
s.
-
getUsersFromRole
Get all the users that satisfy this particular role.Protected access so it can be directly called from unittests
- Parameters:
project
- the project you to find want users forroleId
- the specific role you want to find users for- Returns:
- A collection of
User
objects
-