Page MenuHomePhabricator

D20558.diff
No OneTemporary

D20558.diff

diff --git a/src/applications/policy/filter/PhabricatorPolicyFilter.php b/src/applications/policy/filter/PhabricatorPolicyFilter.php
--- a/src/applications/policy/filter/PhabricatorPolicyFilter.php
+++ b/src/applications/policy/filter/PhabricatorPolicyFilter.php
@@ -90,6 +90,29 @@
PhabricatorUser $user,
PhabricatorPolicyInterface $object) {
+ $capabilities = self::getRequiredInteractCapabilities($object);
+
+ foreach ($capabilities as $capability) {
+ if (!self::hasCapability($user, $object, $capability)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public static function requireCanInteract(
+ PhabricatorUser $user,
+ PhabricatorPolicyInterface $object) {
+
+ $capabilities = self::getRequiredInteractCapabilities($object);
+ foreach ($capabilities as $capability) {
+ self::requireCapability($user, $object, $capability);
+ }
+ }
+
+ private static function getRequiredInteractCapabilities(
+ PhabricatorPolicyInterface $object) {
$capabilities = $object->getCapabilities();
$capabilities = array_fuse($capabilities);
@@ -107,13 +130,7 @@
$require[] = $can_interact;
}
- foreach ($require as $capability) {
- if (!self::hasCapability($user, $object, $capability)) {
- return false;
- }
- }
-
- return true;
+ return $require;
}
public function setViewer(PhabricatorUser $user) {
diff --git a/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentEditController.php b/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentEditController.php
--- a/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentEditController.php
+++ b/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentEditController.php
@@ -36,10 +36,9 @@
// auditing, and editing comments serves neither goal.
$object = $xaction->getObject();
- $can_interact = PhabricatorPolicyFilter::hasCapability(
+ $can_interact = PhabricatorPolicyFilter::canInteract(
$viewer,
- $object,
- PhabricatorPolicyCapability::CAN_INTERACT);
+ $object);
if (!$can_interact) {
return $this->newDialog()
->setTitle(pht('Conversation Locked'))
diff --git a/src/applications/transactions/editor/PhabricatorApplicationTransactionCommentEditor.php b/src/applications/transactions/editor/PhabricatorApplicationTransactionCommentEditor.php
--- a/src/applications/transactions/editor/PhabricatorApplicationTransactionCommentEditor.php
+++ b/src/applications/transactions/editor/PhabricatorApplicationTransactionCommentEditor.php
@@ -189,10 +189,10 @@
$actor,
$xaction,
PhabricatorPolicyCapability::CAN_EDIT);
- PhabricatorPolicyFilter::requireCapability(
+
+ PhabricatorPolicyFilter::requireCanInteract(
$actor,
- $xaction->getObject(),
- PhabricatorPolicyCapability::CAN_INTERACT);
+ $xaction->getObject());
}
}
diff --git a/src/applications/transactions/view/PhabricatorApplicationTransactionView.php b/src/applications/transactions/view/PhabricatorApplicationTransactionView.php
--- a/src/applications/transactions/view/PhabricatorApplicationTransactionView.php
+++ b/src/applications/transactions/view/PhabricatorApplicationTransactionView.php
@@ -513,10 +513,9 @@
}
}
- $can_interact = PhabricatorPolicyFilter::hasCapability(
+ $can_interact = PhabricatorPolicyFilter::canInteract(
$viewer,
- $xaction->getObject(),
- PhabricatorPolicyCapability::CAN_INTERACT);
+ $xaction->getObject());
$event->setCanInteract($can_interact);
}

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 20, 9:48 PM (4 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7444515
Default Alt Text
D20558.diff (3 KB)

Event Timeline