Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15340363
D20718.id49399.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
D20718.id49399.diff
View Options
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
@@ -5327,6 +5327,7 @@
'PhortunePaymentMethodDisableController' => 'applications/phortune/controller/payment/PhortunePaymentMethodDisableController.php',
'PhortunePaymentMethodEditController' => 'applications/phortune/controller/payment/PhortunePaymentMethodEditController.php',
'PhortunePaymentMethodPHIDType' => 'applications/phortune/phid/PhortunePaymentMethodPHIDType.php',
+ 'PhortunePaymentMethodPolicyCodex' => 'applications/phortune/codex/PhortunePaymentMethodPolicyCodex.php',
'PhortunePaymentMethodQuery' => 'applications/phortune/query/PhortunePaymentMethodQuery.php',
'PhortunePaymentProvider' => 'applications/phortune/provider/PhortunePaymentProvider.php',
'PhortunePaymentProviderConfig' => 'applications/phortune/storage/PhortunePaymentProviderConfig.php',
@@ -11888,11 +11889,14 @@
'PhortunePaymentMethod' => array(
'PhortuneDAO',
'PhabricatorPolicyInterface',
+ 'PhabricatorExtendedPolicyInterface',
+ 'PhabricatorPolicyCodexInterface',
),
'PhortunePaymentMethodCreateController' => 'PhortuneController',
'PhortunePaymentMethodDisableController' => 'PhortuneController',
'PhortunePaymentMethodEditController' => 'PhortuneController',
'PhortunePaymentMethodPHIDType' => 'PhabricatorPHIDType',
+ 'PhortunePaymentMethodPolicyCodex' => 'PhabricatorPolicyCodex',
'PhortunePaymentMethodQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'PhortunePaymentProvider' => 'Phobject',
'PhortunePaymentProviderConfig' => array(
diff --git a/src/applications/phortune/codex/PhortunePaymentMethodPolicyCodex.php b/src/applications/phortune/codex/PhortunePaymentMethodPolicyCodex.php
new file mode 100644
--- /dev/null
+++ b/src/applications/phortune/codex/PhortunePaymentMethodPolicyCodex.php
@@ -0,0 +1,34 @@
+<?php
+
+final class PhortunePaymentMethodPolicyCodex
+ extends PhabricatorPolicyCodex {
+
+ public function getPolicySpecialRuleDescriptions() {
+ $object = $this->getObject();
+
+ $rules = array();
+
+ $rules[] = $this->newRule()
+ ->setCapabilities(
+ array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ ))
+ ->setIsActive(true)
+ ->setDescription(
+ pht(
+ 'Account members may view and edit payment methods.'));
+
+ $rules[] = $this->newRule()
+ ->setCapabilities(
+ array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ ))
+ ->setIsActive(true)
+ ->setDescription(
+ pht(
+ 'Merchants you have a relationship with may view payment methods.'));
+
+ return $rules;
+ }
+
+}
diff --git a/src/applications/phortune/controller/account/PhortuneAccountPaymentMethodsController.php b/src/applications/phortune/controller/account/PhortuneAccountPaymentMethodsController.php
--- a/src/applications/phortune/controller/account/PhortuneAccountPaymentMethodsController.php
+++ b/src/applications/phortune/controller/account/PhortuneAccountPaymentMethodsController.php
@@ -34,7 +34,6 @@
->setCrumbs($crumbs)
->setNavigation($navigation)
->appendChild($view);
-
}
private function buildPaymentMethodsSection(PhortuneAccount $account) {
diff --git a/src/applications/phortune/query/PhortunePaymentMethodQuery.php b/src/applications/phortune/query/PhortunePaymentMethodQuery.php
--- a/src/applications/phortune/query/PhortunePaymentMethodQuery.php
+++ b/src/applications/phortune/query/PhortunePaymentMethodQuery.php
@@ -53,6 +53,7 @@
$account = idx($accounts, $method->getAccountPHID());
if (!$account) {
unset($methods[$key]);
+ $this->didRejectResult($method);
continue;
}
$method->attachAccount($account);
@@ -72,6 +73,7 @@
$merchant = idx($merchants, $method->getMerchantPHID());
if (!$merchant) {
unset($methods[$key]);
+ $this->didRejectResult($method);
continue;
}
$method->attachMerchant($merchant);
@@ -91,6 +93,7 @@
$provider_config = idx($provider_configs, $method->getProviderPHID());
if (!$provider_config) {
unset($methods[$key]);
+ $this->didRejectResult($method);
continue;
}
$method->attachProviderConfig($provider_config);
diff --git a/src/applications/phortune/storage/PhortunePaymentMethod.php b/src/applications/phortune/storage/PhortunePaymentMethod.php
--- a/src/applications/phortune/storage/PhortunePaymentMethod.php
+++ b/src/applications/phortune/storage/PhortunePaymentMethod.php
@@ -4,8 +4,12 @@
* A payment method is a credit card; it is associated with an account and
* charges can be made against it.
*/
-final class PhortunePaymentMethod extends PhortuneDAO
- implements PhabricatorPolicyInterface {
+final class PhortunePaymentMethod
+ extends PhortuneDAO
+ implements
+ PhabricatorPolicyInterface,
+ PhabricatorExtendedPolicyInterface,
+ PhabricatorPolicyCodexInterface {
const STATUS_ACTIVE = 'payment:active';
const STATUS_DISABLED = 'payment:disabled';
@@ -148,18 +152,32 @@
}
public function getPolicy($capability) {
- return $this->getAccount()->getPolicy($capability);
+ return PhabricatorPolicies::getMostOpenPolicy();
}
public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
- return $this->getAccount()->hasAutomaticCapability(
- $capability,
- $viewer);
+ return false;
}
- public function describeAutomaticCapability($capability) {
- return pht(
- 'Members of an account can always view and edit its payment methods.');
+
+/* -( PhabricatorExtendedPolicyInterface )--------------------------------- */
+
+
+ public function getExtendedPolicy($capability, PhabricatorUser $viewer) {
+ return array(
+ array(
+ $this->getAccount(),
+ $capability,
+ ),
+ );
+ }
+
+
+/* -( PhabricatorPolicyCodexInterface )------------------------------------ */
+
+
+ public function newPolicyCodex() {
+ return new PhortunePaymentMethodPolicyCodex();
}
}
diff --git a/src/applications/policy/codex/PhabricatorPolicyCodex.php b/src/applications/policy/codex/PhabricatorPolicyCodex.php
--- a/src/applications/policy/codex/PhabricatorPolicyCodex.php
+++ b/src/applications/policy/codex/PhabricatorPolicyCodex.php
@@ -44,16 +44,6 @@
return null;
}
- final public function getPolicySpecialRuleForCapability($capability) {
- foreach ($this->getPolicySpecialRuleDescriptions() as $rule) {
- if (in_array($capability, $rule->getCapabilities())) {
- return $rule;
- }
- }
-
- return null;
- }
-
final protected function newRule() {
return new PhabricatorPolicyCodexRuleDescription();
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Mar 10, 3:02 PM (4 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7227457
Default Alt Text
D20718.id49399.diff (6 KB)
Attached To
Mode
D20718: Update PhortunePaymentMethod for modern policy interfaces
Attached
Detach File
Event Timeline
Log In to Comment