3 final class PhabricatorOAuthServerEditor
4 extends PhabricatorApplicationTransactionEditor
{
6 public function getEditorApplicationClass() {
7 return 'PhabricatorOAuthServerApplication';
10 public function getEditorObjectsDescription() {
11 return pht('OAuth Applications');
14 public function getTransactionTypes() {
15 $types = parent
::getTransactionTypes();
17 $types[] = PhabricatorOAuthServerTransaction
::TYPE_NAME
;
18 $types[] = PhabricatorOAuthServerTransaction
::TYPE_REDIRECT_URI
;
19 $types[] = PhabricatorOAuthServerTransaction
::TYPE_DISABLED
;
21 $types[] = PhabricatorTransactions
::TYPE_VIEW_POLICY
;
22 $types[] = PhabricatorTransactions
::TYPE_EDIT_POLICY
;
27 protected function getCustomTransactionOldValue(
28 PhabricatorLiskDAO
$object,
29 PhabricatorApplicationTransaction
$xaction) {
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();
41 protected function getCustomTransactionNewValue(
42 PhabricatorLiskDAO
$object,
43 PhabricatorApplicationTransaction
$xaction) {
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();
54 protected function applyCustomInternalTransaction(
55 PhabricatorLiskDAO
$object,
56 PhabricatorApplicationTransaction
$xaction) {
58 switch ($xaction->getTransactionType()) {
59 case PhabricatorOAuthServerTransaction
::TYPE_NAME
:
60 $object->setName($xaction->getNewValue());
62 case PhabricatorOAuthServerTransaction
::TYPE_REDIRECT_URI
:
63 $object->setRedirectURI($xaction->getNewValue());
65 case PhabricatorOAuthServerTransaction
::TYPE_DISABLED
:
66 $object->setIsDisabled($xaction->getNewValue());
70 return parent
::applyCustomInternalTransaction($object, $xaction);
73 protected function applyCustomExternalTransaction(
74 PhabricatorLiskDAO
$object,
75 PhabricatorApplicationTransaction
$xaction) {
77 switch ($xaction->getTransactionType()) {
78 case PhabricatorOAuthServerTransaction
::TYPE_NAME
:
79 case PhabricatorOAuthServerTransaction
::TYPE_REDIRECT_URI
:
80 case PhabricatorOAuthServerTransaction
::TYPE_DISABLED
:
84 return parent
::applyCustomExternalTransaction($object, $xaction);
87 protected function validateTransaction(
88 PhabricatorLiskDAO
$object,
92 $errors = parent
::validateTransaction($object, $type, $xactions);
95 case PhabricatorOAuthServerTransaction
::TYPE_NAME
:
96 $missing = $this->validateIsEmptyTextField(
101 $error = new PhabricatorApplicationTransactionValidationError(
104 pht('OAuth applications must have a name.'),
105 nonempty(last($xactions), null));
107 $error->setIsMissingFieldError(true);
111 case PhabricatorOAuthServerTransaction
::TYPE_REDIRECT_URI
:
112 $missing = $this->validateIsEmptyTextField(
113 $object->getRedirectURI(),
116 $error = new PhabricatorApplicationTransactionValidationError(
119 pht('OAuth applications must have a valid redirect URI.'),
120 nonempty(last($xactions), null));
122 $error->setIsMissingFieldError(true);
125 foreach ($xactions as $xaction) {
126 $redirect_uri = $xaction->getNewValue();
129 $server = new PhabricatorOAuthServer();
130 $server->assertValidRedirectURI($redirect_uri);
131 } catch (Exception
$ex) {
132 $errors[] = new PhabricatorApplicationTransactionValidationError(