@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Make "Can Interact" and logged-out users interact more gracefully

Summary:
Fixes T12378. Two minor issues here:

- CAN_INTERACT on tasks uses "USER", but should just use the view policy, which may be more permissive ("PUBLIC").
- CAN_INTERACT is currently prevented from being "PUBLIC" by additional safeguards. Define an explicit capability object for the permission which returns `true` from `shouldAllowPublicPolicySetting()`.

Test Plan:
- Viewed an unlocked task as a logged-out user, saw "login to comment" instead of "locked".
- Viewed a locked task as a logged-out user, saw "locked".

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T12378

Differential Revision: https://secure.phabricator.com/D17485

+23 -1
+2
src/__phutil_library_map__.php
··· 3445 3445 'PhabricatorPolicyAwareQuery' => 'infrastructure/query/policy/PhabricatorPolicyAwareQuery.php', 3446 3446 'PhabricatorPolicyAwareTestQuery' => 'applications/policy/__tests__/PhabricatorPolicyAwareTestQuery.php', 3447 3447 'PhabricatorPolicyCanEditCapability' => 'applications/policy/capability/PhabricatorPolicyCanEditCapability.php', 3448 + 'PhabricatorPolicyCanInteractCapability' => 'applications/policy/capability/PhabricatorPolicyCanInteractCapability.php', 3448 3449 'PhabricatorPolicyCanJoinCapability' => 'applications/policy/capability/PhabricatorPolicyCanJoinCapability.php', 3449 3450 'PhabricatorPolicyCanViewCapability' => 'applications/policy/capability/PhabricatorPolicyCanViewCapability.php', 3450 3451 'PhabricatorPolicyCapability' => 'applications/policy/capability/PhabricatorPolicyCapability.php', ··· 8654 8655 'PhabricatorPolicyAwareQuery' => 'PhabricatorOffsetPagedQuery', 8655 8656 'PhabricatorPolicyAwareTestQuery' => 'PhabricatorPolicyAwareQuery', 8656 8657 'PhabricatorPolicyCanEditCapability' => 'PhabricatorPolicyCapability', 8658 + 'PhabricatorPolicyCanInteractCapability' => 'PhabricatorPolicyCapability', 8657 8659 'PhabricatorPolicyCanJoinCapability' => 'PhabricatorPolicyCapability', 8658 8660 'PhabricatorPolicyCanViewCapability' => 'PhabricatorPolicyCapability', 8659 8661 'PhabricatorPolicyCapability' => 'Phobject',
+1 -1
src/applications/maniphest/storage/ManiphestTask.php
··· 361 361 if ($this->isLocked()) { 362 362 return PhabricatorPolicies::POLICY_NOONE; 363 363 } else { 364 - return PhabricatorPolicies::POLICY_USER; 364 + return $this->getViewPolicy(); 365 365 } 366 366 case PhabricatorPolicyCapability::CAN_EDIT: 367 367 return $this->getEditPolicy();
+20
src/applications/policy/capability/PhabricatorPolicyCanInteractCapability.php
··· 1 + <?php 2 + 3 + final class PhabricatorPolicyCanInteractCapability 4 + extends PhabricatorPolicyCapability { 5 + 6 + const CAPABILITY = self::CAN_INTERACT; 7 + 8 + public function getCapabilityName() { 9 + return pht('Can Interact'); 10 + } 11 + 12 + public function describeCapabilityRejection() { 13 + return pht('You do not have permission to interact with this object.'); 14 + } 15 + 16 + public function shouldAllowPublicPolicySetting() { 17 + return true; 18 + } 19 + 20 + }