Page MenuHomePhabricator

D10819.id25970.diff
No OneTemporary

D10819.id25970.diff

diff --git a/src/applications/phriction/editor/PhrictionTransactionEditor.php b/src/applications/phriction/editor/PhrictionTransactionEditor.php
--- a/src/applications/phriction/editor/PhrictionTransactionEditor.php
+++ b/src/applications/phriction/editor/PhrictionTransactionEditor.php
@@ -587,6 +587,47 @@
}
return $error;
}
+ protected function requireCapabilities(
+ PhabricatorLiskDAO $object,
+ PhabricatorApplicationTransaction $xaction) {
+
+ if ($this->getIsNewObject()) {
+ $actor = $this->requireActor();
+ $parent_doc = null;
+ $ancestral_slugs = PhabricatorSlug::getAncestry($object->getSlug());
+ // the first person gets to play with "/"
+ if ($ancestral_slugs) {
+ $parent = end($ancestral_slugs);
+ $parent_doc = id(new PhrictionDocumentQuery())
+ ->setViewer($actor)
+ ->withSlugs(array($parent))
+ ->executeOne();
+ if (!$parent_doc) {
+ id(new PhabricatorPolicyFilter())
+ ->setViewer($actor)
+ ->raisePolicyExceptions(true)
+ ->rejectObject(
+ $object,
+ $object->getEditPolicy(),
+ PhabricatorPolicyCapability::CAN_EDIT);
+ }
+
+ if (!PhabricatorPolicyFilter::hasCapability(
+ $actor,
+ $parent_doc,
+ PhabricatorPolicyCapability::CAN_EDIT)) {
+ id(new PhabricatorPolicyFilter())
+ ->setViewer($actor)
+ ->raisePolicyExceptions(true)
+ ->rejectObject(
+ $object,
+ $object->getEditPolicy(),
+ PhabricatorPolicyCapability::CAN_EDIT);
+ }
+ }
+ }
+ return parent::requireCapabilities($object, $xaction);
+ }
protected function supportsSearch() {
return true;

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 9, 3:32 PM (1 w, 22 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7738087
Default Alt Text
D10819.id25970.diff (1 KB)

Event Timeline