@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 46 lines 1.3 kB view raw
1<?php 2 3final class PhabricatorAuthChallengeStatusController 4 extends PhabricatorAuthController { 5 6 public function shouldAllowPartialSessions() { 7 // We expect that users may request the status of an MFA challenge when 8 // they hit the session upgrade gate on login. 9 return true; 10 } 11 12 public function handleRequest(AphrontRequest $request) { 13 $viewer = $this->getViewer(); 14 $id = $request->getURIData('id'); 15 $now = PhabricatorTime::getNow(); 16 17 $result = new PhabricatorAuthChallengeUpdate(); 18 19 $challenge = id(new PhabricatorAuthChallengeQuery()) 20 ->setViewer($viewer) 21 ->withIDs(array($id)) 22 ->withUserPHIDs(array($viewer->getPHID())) 23 ->withChallengeTTLBetween($now, null) 24 ->executeOne(); 25 if ($challenge) { 26 $config = id(new PhabricatorAuthFactorConfigQuery()) 27 ->setViewer($viewer) 28 ->withPHIDs(array($challenge->getFactorPHID())) 29 ->executeOne(); 30 if ($config) { 31 $provider = $config->getFactorProvider(); 32 $factor = $provider->getFactor(); 33 34 $result = $factor->newChallengeStatusView( 35 $config, 36 $provider, 37 $viewer, 38 $challenge); 39 } 40 } 41 42 return id(new AphrontAjaxResponse()) 43 ->setContent($result->newContent()); 44 } 45 46}