@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.

at upstream/main 146 lines 4.6 kB view raw
1<?php 2 3final class PhabricatorOAuthServerEditor 4 extends PhabricatorApplicationTransactionEditor { 5 6 public function getEditorApplicationClass() { 7 return PhabricatorOAuthServerApplication::class; 8 } 9 10 public function getEditorObjectsDescription() { 11 return pht('OAuth Applications'); 12 } 13 14 public function getTransactionTypes() { 15 $types = parent::getTransactionTypes(); 16 17 $types[] = PhabricatorOAuthServerTransaction::TYPE_NAME; 18 $types[] = PhabricatorOAuthServerTransaction::TYPE_REDIRECT_URI; 19 $types[] = PhabricatorOAuthServerTransaction::TYPE_DISABLED; 20 21 $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY; 22 $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY; 23 24 return $types; 25 } 26 27 protected function getCustomTransactionOldValue( 28 PhabricatorLiskDAO $object, 29 PhabricatorApplicationTransaction $xaction) { 30 31 switch ($xaction->getTransactionType()) { 32 case PhabricatorOAuthServerTransaction::TYPE_NAME: 33 return $object->getName(); 34 case PhabricatorOAuthServerTransaction::TYPE_REDIRECT_URI: 35 return $object->getRedirectURI(); 36 case PhabricatorOAuthServerTransaction::TYPE_DISABLED: 37 return $object->getIsDisabled(); 38 } 39 } 40 41 protected function getCustomTransactionNewValue( 42 PhabricatorLiskDAO $object, 43 PhabricatorApplicationTransaction $xaction) { 44 45 switch ($xaction->getTransactionType()) { 46 case PhabricatorOAuthServerTransaction::TYPE_NAME: 47 case PhabricatorOAuthServerTransaction::TYPE_REDIRECT_URI: 48 return $xaction->getNewValue(); 49 case PhabricatorOAuthServerTransaction::TYPE_DISABLED: 50 return (int)$xaction->getNewValue(); 51 } 52 } 53 54 protected function applyCustomInternalTransaction( 55 PhabricatorLiskDAO $object, 56 PhabricatorApplicationTransaction $xaction) { 57 58 switch ($xaction->getTransactionType()) { 59 case PhabricatorOAuthServerTransaction::TYPE_NAME: 60 $object->setName($xaction->getNewValue()); 61 return; 62 case PhabricatorOAuthServerTransaction::TYPE_REDIRECT_URI: 63 $object->setRedirectURI($xaction->getNewValue()); 64 return; 65 case PhabricatorOAuthServerTransaction::TYPE_DISABLED: 66 $object->setIsDisabled($xaction->getNewValue()); 67 return; 68 } 69 70 return parent::applyCustomInternalTransaction($object, $xaction); 71 } 72 73 protected function applyCustomExternalTransaction( 74 PhabricatorLiskDAO $object, 75 PhabricatorApplicationTransaction $xaction) { 76 77 switch ($xaction->getTransactionType()) { 78 case PhabricatorOAuthServerTransaction::TYPE_NAME: 79 case PhabricatorOAuthServerTransaction::TYPE_REDIRECT_URI: 80 case PhabricatorOAuthServerTransaction::TYPE_DISABLED: 81 return; 82 } 83 84 return parent::applyCustomExternalTransaction($object, $xaction); 85 } 86 87 protected function validateTransaction( 88 PhabricatorLiskDAO $object, 89 $type, 90 array $xactions) { 91 92 $errors = parent::validateTransaction($object, $type, $xactions); 93 94 switch ($type) { 95 case PhabricatorOAuthServerTransaction::TYPE_NAME: 96 $missing = $this->validateIsEmptyTextField( 97 $object->getName(), 98 $xactions); 99 100 if ($missing) { 101 $error = new PhabricatorApplicationTransactionValidationError( 102 $type, 103 pht('Required'), 104 pht('OAuth applications must have a name.'), 105 nonempty(last($xactions), null)); 106 107 $error->setIsMissingFieldError(true); 108 $errors[] = $error; 109 } 110 break; 111 case PhabricatorOAuthServerTransaction::TYPE_REDIRECT_URI: 112 $missing = $this->validateIsEmptyTextField( 113 $object->getRedirectURI(), 114 $xactions); 115 if ($missing) { 116 $error = new PhabricatorApplicationTransactionValidationError( 117 $type, 118 pht('Required'), 119 pht('OAuth applications must have a valid redirect URI.'), 120 nonempty(last($xactions), null)); 121 122 $error->setIsMissingFieldError(true); 123 $errors[] = $error; 124 } else { 125 foreach ($xactions as $xaction) { 126 $redirect_uri = $xaction->getNewValue(); 127 128 try { 129 $server = new PhabricatorOAuthServer(); 130 $server->assertValidRedirectURI($redirect_uri); 131 } catch (Exception $ex) { 132 $errors[] = new PhabricatorApplicationTransactionValidationError( 133 $type, 134 pht('Invalid'), 135 $ex->getMessage(), 136 $xaction); 137 } 138 } 139 } 140 break; 141 } 142 143 return $errors; 144 } 145 146}