@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
at upstream/main 133 lines 3.5 kB view raw
1<?php 2 3final class PhabricatorAuthFactorProviderEditEngine 4 extends PhabricatorEditEngine { 5 6 private $providerFactor; 7 8 const ENGINECONST = 'auth.factor.provider'; 9 10 public function isEngineConfigurable() { 11 return false; 12 } 13 14 public function getEngineName() { 15 return pht('MFA Providers'); 16 } 17 18 public function getSummaryHeader() { 19 return pht('Edit MFA Providers'); 20 } 21 22 public function getSummaryText() { 23 return pht('This engine is used to edit MFA providers.'); 24 } 25 26 public function getEngineApplicationClass() { 27 return PhabricatorAuthApplication::class; 28 } 29 30 public function setProviderFactor(PhabricatorAuthFactor $factor) { 31 $this->providerFactor = $factor; 32 return $this; 33 } 34 35 public function getProviderFactor() { 36 return $this->providerFactor; 37 } 38 39 protected function newEditableObject() { 40 $factor = $this->getProviderFactor(); 41 if ($factor) { 42 $provider = PhabricatorAuthFactorProvider::initializeNewProvider($factor); 43 } else { 44 $provider = new PhabricatorAuthFactorProvider(); 45 } 46 47 return $provider; 48 } 49 50 protected function newObjectQuery() { 51 return new PhabricatorAuthFactorProviderQuery(); 52 } 53 54 protected function getObjectCreateTitleText($object) { 55 return pht('Create MFA Provider'); 56 } 57 58 protected function getObjectCreateButtonText($object) { 59 return pht('Create MFA Provider'); 60 } 61 62 protected function getObjectEditTitleText($object) { 63 return pht('Edit MFA Provider'); 64 } 65 66 protected function getObjectEditShortText($object) { 67 return $object->getObjectName(); 68 } 69 70 protected function getObjectCreateShortText() { 71 return pht('Create MFA Provider'); 72 } 73 74 protected function getObjectName() { 75 return pht('MFA Provider'); 76 } 77 78 protected function getEditorURI() { 79 return '/auth/mfa/edit/'; 80 } 81 82 protected function getObjectCreateCancelURI($object) { 83 return '/auth/mfa/'; 84 } 85 86 protected function getObjectViewURI($object) { 87 return $object->getURI(); 88 } 89 90 protected function getCreateNewObjectPolicy() { 91 return $this->getApplication()->getPolicy( 92 AuthManageProvidersCapability::CAPABILITY); 93 } 94 95 protected function buildCustomEditFields($object) { 96 $factor = $object->getFactor(); 97 $factor_name = $factor->getFactorName(); 98 99 $status_map = PhabricatorAuthFactorProviderStatus::getMap(); 100 101 $fields = array( 102 id(new PhabricatorStaticEditField()) 103 ->setKey('displayType') 104 ->setLabel(pht('Factor Type')) 105 ->setDescription(pht('Type of the MFA provider.')) 106 ->setValue($factor_name), 107 id(new PhabricatorTextEditField()) 108 ->setKey('name') 109 ->setTransactionType( 110 PhabricatorAuthFactorProviderNameTransaction::TRANSACTIONTYPE) 111 ->setLabel(pht('Name')) 112 ->setDescription(pht('Display name for the MFA provider.')) 113 ->setValue($object->getName()) 114 ->setPlaceholder($factor_name), 115 id(new PhabricatorSelectEditField()) 116 ->setKey('status') 117 ->setTransactionType( 118 PhabricatorAuthFactorProviderStatusTransaction::TRANSACTIONTYPE) 119 ->setLabel(pht('Status')) 120 ->setDescription(pht('Status of the MFA provider.')) 121 ->setValue($object->getStatus()) 122 ->setOptions($status_map), 123 ); 124 125 $factor_fields = $factor->newEditEngineFields($this, $object); 126 foreach ($factor_fields as $field) { 127 $fields[] = $field; 128 } 129 130 return $fields; 131 } 132 133}