@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 84 lines 2.7 kB view raw
1<?php 2 3final class PhabricatorAuthFactorProviderMessageController 4 extends PhabricatorAuthFactorProviderController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $this->requireApplicationCapability( 8 AuthManageProvidersCapability::CAPABILITY); 9 10 $viewer = $request->getViewer(); 11 $id = $request->getURIData('id'); 12 13 $provider = id(new PhabricatorAuthFactorProviderQuery()) 14 ->setViewer($viewer) 15 ->withIDs(array($id)) 16 ->requireCapabilities( 17 array( 18 PhabricatorPolicyCapability::CAN_VIEW, 19 PhabricatorPolicyCapability::CAN_EDIT, 20 )) 21 ->executeOne(); 22 if (!$provider) { 23 return new Aphront404Response(); 24 } 25 26 $cancel_uri = $provider->getURI(); 27 $enroll_key = 28 PhabricatorAuthFactorProviderEnrollMessageTransaction::TRANSACTIONTYPE; 29 30 $message = $provider->getEnrollMessage(); 31 32 if ($request->isFormOrHisecPost()) { 33 $message = $request->getStr('message'); 34 35 $xactions = array(); 36 37 $xactions[] = id(new PhabricatorAuthFactorProviderTransaction()) 38 ->setTransactionType($enroll_key) 39 ->setNewValue($message); 40 41 $editor = id(new PhabricatorAuthFactorProviderEditor()) 42 ->setActor($viewer) 43 ->setContentSourceFromRequest($request) 44 ->setContinueOnNoEffect(true) 45 ->setContinueOnMissingFields(true) 46 ->setCancelURI($cancel_uri); 47 48 $editor->applyTransactions($provider, $xactions); 49 50 return id(new AphrontRedirectResponse())->setURI($cancel_uri); 51 } 52 53 $default_message = $provider->getEnrollDescription($viewer); 54 $default_message = new PHUIRemarkupView($viewer, $default_message); 55 56 $form = id(new AphrontFormView()) 57 ->setViewer($viewer) 58 ->appendRemarkupInstructions( 59 pht( 60 'When users add a factor for this provider, they are given this '. 61 'enrollment guidance by default:')) 62 ->appendControl( 63 id(new AphrontFormMarkupControl()) 64 ->setLabel(pht('Default Message')) 65 ->setValue($default_message)) 66 ->appendRemarkupInstructions( 67 pht( 68 'You may optionally customize the enrollment message users are '. 69 'presented with by providing a replacement message below:')) 70 ->appendControl( 71 id(new PhabricatorRemarkupControl()) 72 ->setLabel(pht('Custom Message')) 73 ->setName('message') 74 ->setValue($message)); 75 76 return $this->newDialog() 77 ->setTitle(pht('Change Enroll Message')) 78 ->setWidth(AphrontDialogView::WIDTH_FORM) 79 ->appendForm($form) 80 ->addCancelButton($cancel_uri) 81 ->addSubmitButton(pht('Save')); 82 } 83 84}