Class WorklogPROWorkflowBasedPermissionManager

java.lang.Object
All Implemented Interfaces:
com.atlassian.jira.security.PermissionManager, WPPermissionManager

public class WorklogPROWorkflowBasedPermissionManager
extends WorklogPROPermissionManager
At first this was a decorator around PermissionManager but it caused cyclic dependency when starting jira. Users can prevent working on issue using workflow properties. See WLP-836 for more details. Also note that jira.permission.work.denied means work is denied for edit and delete to. This is why we are checking WORK_ON_ISSUE even if when we are moving a worklog or deleting editing a worklog.
  • Nested Class Summary

    Nested classes/interfaces inherited from interface com.deniz.jira.worklog.permissions.WPPermissionManager

    WPPermissionManager.Access
  • Field Summary

  • Constructor Summary

    Constructors 
    Constructor Description
    WorklogPROWorkflowBasedPermissionManager​(com.atlassian.jira.user.util.UserManager userManager, com.atlassian.jira.permission.PermissionContextFactory permissionContextFactory, com.atlassian.jira.security.PermissionManager permissionManager, com.atlassian.jira.issue.security.IssueSecuritySchemeManager issueSecuritySchemeManager, com.atlassian.jira.permission.PermissionSchemeManager permissionSchemeManager, InternalIssuesService internalIssuesService)  
  • Method Summary

    Modifier and Type Method Description
    void flushCache()  
    java.util.Collection<com.atlassian.crowd.embedded.api.Group> getAllGroups​(int permissionId, com.atlassian.jira.project.Project project)  
    java.util.Collection<com.atlassian.jira.permission.ProjectPermission> getAllProjectPermissions()  
    java.util.Collection<com.atlassian.jira.project.Project> getArchivedProjects​(com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, com.atlassian.jira.user.ApplicationUser applicationUser)  
    io.atlassian.fugue.Option<com.atlassian.jira.permission.ProjectPermission> getProjectPermission​(com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey)
    Maps from permission key to permission module description in xml file.
    java.util.Collection<com.atlassian.jira.permission.ProjectPermission> getProjectPermissions​(com.atlassian.jira.permission.ProjectPermissionCategory projectPermissionCategory)  
    java.util.Collection<com.atlassian.jira.project.Project> getProjects​(int permissionId, com.atlassian.jira.user.ApplicationUser applicationUser)  
    java.util.Collection<com.atlassian.jira.project.Project> getProjects​(int permissionId, com.atlassian.jira.user.ApplicationUser applicationUser, com.atlassian.jira.project.ProjectCategory projectCategory)  
    java.util.Collection<com.atlassian.jira.project.Project> getProjects​(com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, com.atlassian.jira.user.ApplicationUser applicationUser)  
    java.util.Collection<com.atlassian.jira.project.Project> getProjects​(com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, com.atlassian.jira.user.ApplicationUser applicationUser, com.atlassian.jira.project.ProjectCategory projectCategory)  
    boolean hasPermission​(int permissionId, com.atlassian.jira.issue.Issue issue, com.atlassian.jira.user.ApplicationUser applicationUser)
    We handle "WORK_ON_ISSUE" and other worklog related permissions as a special case in this method to allow collaborators to log work if they have permission granted to them.
    boolean hasPermission​(int permissionId, com.atlassian.jira.project.Project project, com.atlassian.jira.user.ApplicationUser applicationUser)
    We handle "WORK_ON_ISSUE" and other worklog related permissions as a special case in this method to allow collaborators to log work if they have permission granted to them.
    boolean hasPermission​(int permissionId, com.atlassian.jira.project.Project project, com.atlassian.jira.user.ApplicationUser applicationUser, boolean createIssue)
    We handle "WORK_ON_ISSUE" and other worklog related permissions as a special case in this method to allow collaborators to log work if they have permission granted to them.
    boolean hasPermission​(int permissionId, com.atlassian.jira.user.ApplicationUser applicationUser)  
    boolean hasPermission​(com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, com.atlassian.jira.issue.Issue issue, com.atlassian.jira.user.ApplicationUser applicationUser)
    We handle "Worklog Related Permissions" as a special case in this method to allow collaborators to log work if they have permission granted to them.
    boolean hasPermission​(com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, com.atlassian.jira.issue.Issue issue, com.atlassian.jira.user.ApplicationUser applicationUser, com.atlassian.jira.issue.status.Status status)  
    boolean hasPermission​(com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, com.atlassian.jira.issue.Issue issue, com.atlassian.jira.user.ApplicationUser applicationUser, com.opensymphony.workflow.loader.ActionDescriptor actionDescriptor)  
    boolean hasPermission​(com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, com.atlassian.jira.project.Project project, com.atlassian.jira.user.ApplicationUser applicationUser)
    We handle "WORK_ON_ISSUE" and other worklog related permissions as a special case in this method to allow collaborators to log work if they have permission granted to them.
    boolean hasPermission​(com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, com.atlassian.jira.project.Project project, com.atlassian.jira.user.ApplicationUser applicationUser, boolean createIssue)  
    boolean hasProjects​(int permissionId, com.atlassian.jira.user.ApplicationUser applicationUser)  
    boolean hasProjects​(com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, com.atlassian.jira.user.ApplicationUser applicationUser)  
    com.atlassian.jira.security.ProjectWidePermission hasProjectWidePermission​(com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, com.atlassian.jira.project.Project project, com.atlassian.jira.user.ApplicationUser applicationUser)  
    boolean hasPublicAccess​(com.atlassian.jira.user.ApplicationUser applicationUser)  
    void removeGroupPermissions​(java.lang.String group)  
    void removeUserPermissions​(com.atlassian.jira.user.ApplicationUser applicationUser)  

    Methods inherited from class com.deniz.jira.worklog.permissions.WorklogPROPermissionManager

    doIssuePermissionCheck, doProjectPermissionCheck

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • WorklogPROWorkflowBasedPermissionManager

      public WorklogPROWorkflowBasedPermissionManager​(com.atlassian.jira.user.util.UserManager userManager, com.atlassian.jira.permission.PermissionContextFactory permissionContextFactory, com.atlassian.jira.security.PermissionManager permissionManager, com.atlassian.jira.issue.security.IssueSecuritySchemeManager issueSecuritySchemeManager, com.atlassian.jira.permission.PermissionSchemeManager permissionSchemeManager, InternalIssuesService internalIssuesService)
  • Method Details

    • getAllProjectPermissions

      public java.util.Collection<com.atlassian.jira.permission.ProjectPermission> getAllProjectPermissions()
      Specified by:
      getAllProjectPermissions in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      getAllProjectPermissions in class AbstractWorklogPROPermissionManager
    • getProjectPermissions

      public java.util.Collection<com.atlassian.jira.permission.ProjectPermission> getProjectPermissions​(@Nonnull com.atlassian.jira.permission.ProjectPermissionCategory projectPermissionCategory)
      Specified by:
      getProjectPermissions in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      getProjectPermissions in class AbstractWorklogPROPermissionManager
    • getProjectPermission

      public io.atlassian.fugue.Option<com.atlassian.jira.permission.ProjectPermission> getProjectPermission​(@Nonnull com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey)
      Description copied from class: WorklogPROPermissionManager
      Maps from permission key to permission module description in xml file. Description includes more information about the permission such as whether it is applicable to/available for archived entities.
      Specified by:
      getProjectPermission in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      getProjectPermission in class WorklogPROPermissionManager
    • hasPermission

      public boolean hasPermission​(int permissionId, com.atlassian.jira.user.ApplicationUser applicationUser)
      Specified by:
      hasPermission in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasPermission in class AbstractWorklogPROPermissionManager
    • hasPermission

      public boolean hasPermission​(int permissionId, com.atlassian.jira.issue.Issue issue, com.atlassian.jira.user.ApplicationUser applicationUser)
      Description copied from class: AbstractWorklogPROPermissionManager
      We handle "WORK_ON_ISSUE" and other worklog related permissions as a special case in this method to allow collaborators to log work if they have permission granted to them.
      Specified by:
      hasPermission in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasPermission in class AbstractWorklogPROPermissionManager
    • hasPermission

      public boolean hasPermission​(@Nonnull com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, @Nonnull com.atlassian.jira.issue.Issue issue, @Nullable com.atlassian.jira.user.ApplicationUser applicationUser)
      Description copied from class: AbstractWorklogPROPermissionManager
      We handle "Worklog Related Permissions" as a special case in this method to allow collaborators to log work if they have permission granted to them.
      Specified by:
      hasPermission in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasPermission in class AbstractWorklogPROPermissionManager
    • hasPermission

      public boolean hasPermission​(@Nonnull com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, @Nonnull com.atlassian.jira.issue.Issue issue, @Nullable com.atlassian.jira.user.ApplicationUser applicationUser, @Nullable com.opensymphony.workflow.loader.ActionDescriptor actionDescriptor)
      Specified by:
      hasPermission in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasPermission in class AbstractWorklogPROPermissionManager
    • hasPermission

      public boolean hasPermission​(@Nonnull com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, @Nonnull com.atlassian.jira.issue.Issue issue, @Nullable com.atlassian.jira.user.ApplicationUser applicationUser, @Nonnull com.atlassian.jira.issue.status.Status status)
      Specified by:
      hasPermission in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasPermission in class AbstractWorklogPROPermissionManager
    • hasPermission

      public boolean hasPermission​(int permissionId, com.atlassian.jira.project.Project project, com.atlassian.jira.user.ApplicationUser applicationUser)
      Description copied from class: AbstractWorklogPROPermissionManager
      We handle "WORK_ON_ISSUE" and other worklog related permissions as a special case in this method to allow collaborators to log work if they have permission granted to them.
      Specified by:
      hasPermission in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasPermission in class AbstractWorklogPROPermissionManager
    • hasPermission

      public boolean hasPermission​(@Nonnull com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, @Nonnull com.atlassian.jira.project.Project project, @Nullable com.atlassian.jira.user.ApplicationUser applicationUser)
      Description copied from class: AbstractWorklogPROPermissionManager
      We handle "WORK_ON_ISSUE" and other worklog related permissions as a special case in this method to allow collaborators to log work if they have permission granted to them.
      Specified by:
      hasPermission in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasPermission in class AbstractWorklogPROPermissionManager
    • hasProjectWidePermission

      @Nonnull public com.atlassian.jira.security.ProjectWidePermission hasProjectWidePermission​(@Nonnull com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, @Nonnull com.atlassian.jira.project.Project project, @Nullable com.atlassian.jira.user.ApplicationUser applicationUser)
      Specified by:
      hasProjectWidePermission in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasProjectWidePermission in class AbstractWorklogPROPermissionManager
    • hasPermission

      public boolean hasPermission​(int permissionId, com.atlassian.jira.project.Project project, com.atlassian.jira.user.ApplicationUser applicationUser, boolean createIssue)
      Description copied from class: AbstractWorklogPROPermissionManager
      We handle "WORK_ON_ISSUE" and other worklog related permissions as a special case in this method to allow collaborators to log work if they have permission granted to them.
      Specified by:
      hasPermission in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasPermission in class AbstractWorklogPROPermissionManager
    • hasPermission

      public boolean hasPermission​(@Nonnull com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, @Nonnull com.atlassian.jira.project.Project project, @Nullable com.atlassian.jira.user.ApplicationUser applicationUser, boolean createIssue)
      Specified by:
      hasPermission in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasPermission in class AbstractWorklogPROPermissionManager
    • removeGroupPermissions

      public void removeGroupPermissions​(java.lang.String group) throws com.atlassian.jira.exception.RemoveException
      Specified by:
      removeGroupPermissions in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      removeGroupPermissions in class AbstractWorklogPROPermissionManager
      Throws:
      com.atlassian.jira.exception.RemoveException
    • removeUserPermissions

      public void removeUserPermissions​(com.atlassian.jira.user.ApplicationUser applicationUser) throws com.atlassian.jira.exception.RemoveException
      Specified by:
      removeUserPermissions in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      removeUserPermissions in class AbstractWorklogPROPermissionManager
      Throws:
      com.atlassian.jira.exception.RemoveException
    • hasProjects

      public boolean hasProjects​(int permissionId, com.atlassian.jira.user.ApplicationUser applicationUser)
      Specified by:
      hasProjects in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasProjects in class AbstractWorklogPROPermissionManager
    • hasProjects

      public boolean hasProjects​(@Nonnull com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, @Nullable com.atlassian.jira.user.ApplicationUser applicationUser)
      Specified by:
      hasProjects in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasProjects in class AbstractWorklogPROPermissionManager
    • getProjects

      public java.util.Collection<com.atlassian.jira.project.Project> getProjects​(int permissionId, com.atlassian.jira.user.ApplicationUser applicationUser)
      Specified by:
      getProjects in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      getProjects in class AbstractWorklogPROPermissionManager
    • getProjects

      public java.util.Collection<com.atlassian.jira.project.Project> getProjects​(@Nonnull com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, @Nullable com.atlassian.jira.user.ApplicationUser applicationUser)
      Specified by:
      getProjects in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      getProjects in class AbstractWorklogPROPermissionManager
    • getProjects

      public java.util.Collection<com.atlassian.jira.project.Project> getProjects​(int permissionId, com.atlassian.jira.user.ApplicationUser applicationUser, com.atlassian.jira.project.ProjectCategory projectCategory)
      Specified by:
      getProjects in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      getProjects in class AbstractWorklogPROPermissionManager
    • getProjects

      public java.util.Collection<com.atlassian.jira.project.Project> getProjects​(@Nonnull com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, @Nullable com.atlassian.jira.user.ApplicationUser applicationUser, @Nullable com.atlassian.jira.project.ProjectCategory projectCategory)
      Specified by:
      getProjects in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      getProjects in class AbstractWorklogPROPermissionManager
    • getArchivedProjects

      public java.util.Collection<com.atlassian.jira.project.Project> getArchivedProjects​(@Nonnull com.atlassian.jira.security.plugin.ProjectPermissionKey projectPermissionKey, @Nullable com.atlassian.jira.user.ApplicationUser applicationUser)
      Specified by:
      getArchivedProjects in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      getArchivedProjects in class WorklogPROPermissionManager
    • flushCache

      public void flushCache()
      Specified by:
      flushCache in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      flushCache in class AbstractWorklogPROPermissionManager
    • getAllGroups

      public java.util.Collection<com.atlassian.crowd.embedded.api.Group> getAllGroups​(int permissionId, com.atlassian.jira.project.Project project)
      Specified by:
      getAllGroups in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      getAllGroups in class AbstractWorklogPROPermissionManager
    • hasPublicAccess

      public boolean hasPublicAccess​(@Nullable com.atlassian.jira.user.ApplicationUser applicationUser)
      Specified by:
      hasPublicAccess in interface com.atlassian.jira.security.PermissionManager
      Overrides:
      hasPublicAccess in class WorklogPROPermissionManager