Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/auth/controller/mfa/PhabricatorAuthChallengeStatusController.php
12262 views
1
<?php
2
3
final 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
}
47
48