Class CurrentAssigneeHasAssignablePermission

All Implemented Interfaces:
SchemeType, SecurityType

public class CurrentAssigneeHasAssignablePermission extends SimpleIssueFieldSecurityType
  • Constructor Details

    • CurrentAssigneeHasAssignablePermission

      public CurrentAssigneeHasAssignablePermission(JiraAuthenticationContext jiraAuthenticationContext)
  • Method Details

    • getDisplayName

      public String getDisplayName()
    • getType

      public String getType()
    • doValidation

      public void doValidation(String key, Map parameters, JiraServiceContext jiraServiceContext)
    • getFieldName

      protected String getFieldName(String parameter)
      Description copied from class: AbstractIssueFieldSecurityType
      Get the field name for this Issue Field-based Security Type given the parameter in the saved configuration.

      Some Field based permissions are based on hard-coded fields like assignee and reporter in which case the parameter is not used. Other types use the parameter to name the particular User or Group custom field that is used for the permission.

      Specified by:
      getFieldName in class AbstractIssueFieldSecurityType
      Parameters:
      parameter - the parameter as saved in the config
      Returns:
      the field name for this Issue Field-based Security Type.
    • isValidForPermission

      public boolean isValidForPermission(ProjectPermissionKey permissionKey)
      Is valid for all permissions except "Assignable".

      Because we rely on the permissions for the "Assignable" function, then not only does it not make sense to add this role to "Assignable", it would actually cause an infinite loop. see JRA-13315

      Specified by:
      isValidForPermission in interface SchemeType
      Overrides:
      isValidForPermission in class AbstractSecurityType
      Parameters:
      permissionKey - permission key.
      Returns:
      false for Permissions.ASSIGNABLE_USER, true otherwise.
      See Also:
    • hasProjectPermission

      protected boolean hasProjectPermission(ApplicationUser user, boolean issueCreation, Project project)
      Specified by:
      hasProjectPermission in class AbstractIssueFieldSecurityType
    • getField

      protected String getField()
      Specified by:
      getField in class SimpleIssueFieldSecurityType
    • getUsers

      public Set<ApplicationUser> getUsers(@Nonnull PermissionContext ctx, @Nullable String ignored)
      Description copied from interface: SecurityType
      Returns a set of ApplicationUsers represented by a security type instance. The collection must not contain any nulls.
      Parameters:
      ctx - The current issue and project
      ignored - Instance value, eg. a group name, user name, custom field id
      Returns:
      A set of ApplicationUsers.
    • getUsers

      @Nonnull public Set<ApplicationUser> getUsers(@Nonnull PermissionContext ctx, @Nullable String ignored, @Nonnull String userSearchName, int limit)
      Description copied from interface: SecurityType
      Returns a set of ApplicationUsers represented by a security type instance optionally filtered by given userSearchName.

      The implementation must be as performant as possible and return users sorted by lowercase display name, then lowercase username.

      The default implementation is provided only not to break existing implementations and should be avoided at all cost.

      Parameters:
      ctx - the context this method is called in; contains issue and project
      ignored - instance value, e.g. group name, username, custom field id
      userSearchName - query for user name; may be blank
      limit - maximum number of users to return
    • getFieldValue

      protected String getFieldValue(Issue issue)
      Description copied from class: SimpleIssueFieldSecurityType
      Returns the user key value for the given issue for the field that this security type checks.
      Specified by:
      getFieldValue in class SimpleIssueFieldSecurityType
      Parameters:
      issue - the Issue
      Returns:
      the user key value for the given issue for the field that this security type checks.