@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<?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}