Skip to content

Commit d0c648d

Browse files
author
epriestley
committedMar 9, 2017
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
1 parent 4c7d464 commit d0c648d

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed
 

‎src/__phutil_library_map__.php

+2
Original file line numberDiff line numberDiff line change
@@ -3445,6 +3445,7 @@
34453445
'PhabricatorPolicyAwareQuery' => 'infrastructure/query/policy/PhabricatorPolicyAwareQuery.php',
34463446
'PhabricatorPolicyAwareTestQuery' => 'applications/policy/__tests__/PhabricatorPolicyAwareTestQuery.php',
34473447
'PhabricatorPolicyCanEditCapability' => 'applications/policy/capability/PhabricatorPolicyCanEditCapability.php',
3448+
'PhabricatorPolicyCanInteractCapability' => 'applications/policy/capability/PhabricatorPolicyCanInteractCapability.php',
34483449
'PhabricatorPolicyCanJoinCapability' => 'applications/policy/capability/PhabricatorPolicyCanJoinCapability.php',
34493450
'PhabricatorPolicyCanViewCapability' => 'applications/policy/capability/PhabricatorPolicyCanViewCapability.php',
34503451
'PhabricatorPolicyCapability' => 'applications/policy/capability/PhabricatorPolicyCapability.php',
@@ -8654,6 +8655,7 @@
86548655
'PhabricatorPolicyAwareQuery' => 'PhabricatorOffsetPagedQuery',
86558656
'PhabricatorPolicyAwareTestQuery' => 'PhabricatorPolicyAwareQuery',
86568657
'PhabricatorPolicyCanEditCapability' => 'PhabricatorPolicyCapability',
8658+
'PhabricatorPolicyCanInteractCapability' => 'PhabricatorPolicyCapability',
86578659
'PhabricatorPolicyCanJoinCapability' => 'PhabricatorPolicyCapability',
86588660
'PhabricatorPolicyCanViewCapability' => 'PhabricatorPolicyCapability',
86598661
'PhabricatorPolicyCapability' => 'Phobject',

‎src/applications/maniphest/storage/ManiphestTask.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ public function getPolicy($capability) {
361361
if ($this->isLocked()) {
362362
return PhabricatorPolicies::POLICY_NOONE;
363363
} else {
364-
return PhabricatorPolicies::POLICY_USER;
364+
return $this->getViewPolicy();
365365
}
366366
case PhabricatorPolicyCapability::CAN_EDIT:
367367
return $this->getEditPolicy();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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+
}

0 commit comments

Comments
 (0)
Failed to load comments.