diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -2848,6 +2848,9 @@ 'ProjectConduitAPIMethod' => 'applications/project/conduit/ProjectConduitAPIMethod.php', 'ProjectCreateConduitAPIMethod' => 'applications/project/conduit/ProjectCreateConduitAPIMethod.php', 'ProjectCreateProjectsCapability' => 'applications/project/capability/ProjectCreateProjectsCapability.php', + 'ProjectDefaultEditCapability' => 'applications/project/capability/ProjectDefaultEditCapability.php', + 'ProjectDefaultJoinCapability' => 'applications/project/capability/ProjectDefaultJoinCapability.php', + 'ProjectDefaultViewCapability' => 'applications/project/capability/ProjectDefaultViewCapability.php', 'ProjectQueryConduitAPIMethod' => 'applications/project/conduit/ProjectQueryConduitAPIMethod.php', 'ProjectRemarkupRule' => 'applications/project/remarkup/ProjectRemarkupRule.php', 'ProjectRemarkupRuleTestCase' => 'applications/project/remarkup/__tests__/ProjectRemarkupRuleTestCase.php', @@ -6090,6 +6093,9 @@ 'ProjectConduitAPIMethod' => 'ConduitAPIMethod', 'ProjectCreateConduitAPIMethod' => 'ProjectConduitAPIMethod', 'ProjectCreateProjectsCapability' => 'PhabricatorPolicyCapability', + 'ProjectDefaultEditCapability' => 'PhabricatorPolicyCapability', + 'ProjectDefaultJoinCapability' => 'PhabricatorPolicyCapability', + 'ProjectDefaultViewCapability' => 'PhabricatorPolicyCapability', 'ProjectQueryConduitAPIMethod' => 'ProjectConduitAPIMethod', 'ProjectRemarkupRule' => 'PhabricatorObjectRemarkupRule', 'ProjectRemarkupRuleTestCase' => 'PhabricatorTestCase', diff --git a/src/applications/project/application/PhabricatorProjectApplication.php b/src/applications/project/application/PhabricatorProjectApplication.php --- a/src/applications/project/application/PhabricatorProjectApplication.php +++ b/src/applications/project/application/PhabricatorProjectApplication.php @@ -98,6 +98,18 @@ ProjectCanLockProjectsCapability::CAPABILITY => array( 'default' => PhabricatorPolicies::POLICY_ADMIN, ), + ProjectDefaultViewCapability::CAPABILITY => array( + 'caption' => pht( + 'Default view policy for newly created projects.'), + ), + ProjectDefaultEditCapability::CAPABILITY => array( + 'caption' => pht( + 'Default edit policy for newly created projects.'), + ), + ProjectDefaultJoinCapability::CAPABILITY => array( + 'caption' => pht( + 'Default join policy for newly created projects.'), + ), ); } diff --git a/src/applications/project/capability/ProjectDefaultEditCapability.php b/src/applications/project/capability/ProjectDefaultEditCapability.php new file mode 100644 --- /dev/null +++ b/src/applications/project/capability/ProjectDefaultEditCapability.php @@ -0,0 +1,12 @@ +setViewer(PhabricatorUser::getOmnipotentUser()) + ->withClasses(array('PhabricatorProjectApplication')) + ->executeOne(); + + $view_policy = $app->getPolicy( + ProjectDefaultViewCapability::CAPABILITY); + $edit_policy = $app->getPolicy( + ProjectDefaultEditCapability::CAPABILITY); + $join_policy = $app->getPolicy( + ProjectDefaultJoinCapability::CAPABILITY); + return id(new PhabricatorProject()) ->setName('') ->setAuthorPHID($actor->getPHID()) ->setIcon(self::DEFAULT_ICON) ->setColor(self::DEFAULT_COLOR) - ->setViewPolicy(PhabricatorPolicies::POLICY_USER) - ->setEditPolicy(PhabricatorPolicies::POLICY_USER) - ->setJoinPolicy(PhabricatorPolicies::POLICY_USER) + ->setViewPolicy($view_policy) + ->setEditPolicy($edit_policy) + ->setJoinPolicy($join_policy) ->setIsMembershipLocked(0) ->attachMemberPHIDs(array()) ->attachSlugs(array());