@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 recaptime-dev/main 63 lines 1.8 kB view raw
1<?php 2 3final class PhabricatorAuthInviteController 4 extends PhabricatorAuthController { 5 6 public function shouldRequireLogin() { 7 return false; 8 } 9 10 public function handleRequest(AphrontRequest $request) { 11 $viewer = $this->getViewer(); 12 13 $engine = id(new PhabricatorAuthInviteEngine()) 14 ->setViewer($viewer); 15 16 if ($request->isFormPost()) { 17 $engine->setUserHasConfirmedVerify(true); 18 } 19 20 $invite_code = $request->getURIData('code'); 21 22 try { 23 $invite = $engine->processInviteCode($invite_code); 24 } catch (PhabricatorAuthInviteDialogException $ex) { 25 $response = $this->newDialog() 26 ->setTitle($ex->getTitle()) 27 ->appendParagraph($ex->getBody()); 28 29 $submit_text = $ex->getSubmitButtonText(); 30 if ($submit_text) { 31 $response->addSubmitButton($submit_text); 32 } 33 34 $submit_uri = $ex->getSubmitButtonURI(); 35 if ($submit_uri) { 36 $response->setSubmitURI($submit_uri); 37 } 38 39 $cancel_uri = $ex->getCancelButtonURI(); 40 $cancel_text = $ex->getCancelButtonText(); 41 if ($cancel_uri && $cancel_text) { 42 $response->addCancelButton($cancel_uri, $cancel_text); 43 } else if ($cancel_uri) { 44 $response->addCancelButton($cancel_uri); 45 } 46 47 return $response; 48 } catch (PhabricatorAuthInviteRegisteredException $ex) { 49 // We're all set on processing this invite, just send the user home. 50 return id(new AphrontRedirectResponse())->setURI('/'); 51 } 52 53 // Give the user a cookie with the invite code and send them through 54 // normal registration. We'll adjust the flow there. 55 $request->setCookie( 56 PhabricatorCookies::COOKIE_INVITE, 57 $invite_code); 58 59 return id(new AphrontRedirectResponse())->setURI('/auth/start/'); 60 } 61 62 63}