Skip to content
  • epriestley's avatar
    Allow PolicyRules to serve as "Object Policies" · 46675547
    epriestley authored
    Summary:
    Ref T5681. Ref T8488. This allows policy rules to provide "Object Policies", which are similar to the global/basic policies:
    
      - They show up directly in the dropdown (you don't have to create a custom rule).
      - They don't need to create or load anything in the database.
    
    To implement one, you just add a couple methods on an existing PolicyRule that let Phabricator know it can work as an object policy rule.
    
    {F494764}
    
    These rules only show up where they make sense. For example, the "Task Author" rule is only available in Maniphest, and in "Default View Policy" / "Default Edit Policy" of the Application config.
    
    This should make T8488 easier by letting us set the default policies to "Members of Thread", without having to create a dedicated custom policy for every thread.
    
    Test Plan:
      - Set tasks to "Task Author" policy.
      - Tried to view them as other users.
      - Viewed transaction change strings.
      - Viewed policy errors.
      - Set them as default policies.
      - Verified they don't leak into other policy controls.
    
    Reviewers: btrahan
    
    Reviewed By: btrahan
    
    Subscribers: epriestley
    
    Maniphest Tasks: T5681, T8488
    
    Differential Revision: https://secure.phabricator.com/D13257
    46675547