Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/auth/controller/mfa/PhabricatorAuthFactorProviderViewController.php
12262 views
1
<?php
2
3
final class PhabricatorAuthFactorProviderViewController
4
extends PhabricatorAuthFactorProviderController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$viewer = $this->getViewer();
8
9
$this->requireApplicationCapability(
10
AuthManageProvidersCapability::CAPABILITY);
11
12
$provider = id(new PhabricatorAuthFactorProviderQuery())
13
->setViewer($viewer)
14
->withIDs(array($request->getURIData('id')))
15
->executeOne();
16
if (!$provider) {
17
return new Aphront404Response();
18
}
19
20
$crumbs = $this->buildApplicationCrumbs()
21
->addTextCrumb($provider->getObjectName())
22
->setBorder(true);
23
24
$header = $this->buildHeaderView($provider);
25
$properties = $this->buildPropertiesView($provider);
26
$curtain = $this->buildCurtain($provider);
27
28
29
$timeline = $this->buildTransactionTimeline(
30
$provider,
31
new PhabricatorAuthFactorProviderTransactionQuery());
32
$timeline->setShouldTerminate(true);
33
34
$view = id(new PHUITwoColumnView())
35
->setHeader($header)
36
->setCurtain($curtain)
37
->setMainColumn(
38
array(
39
$timeline,
40
))
41
->addPropertySection(pht('Details'), $properties);
42
43
return $this->newPage()
44
->setTitle($provider->getDisplayName())
45
->setCrumbs($crumbs)
46
->setPageObjectPHIDs(
47
array(
48
$provider->getPHID(),
49
))
50
->appendChild($view);
51
}
52
53
private function buildHeaderView(PhabricatorAuthFactorProvider $provider) {
54
$viewer = $this->getViewer();
55
56
$view = id(new PHUIHeaderView())
57
->setViewer($viewer)
58
->setHeader($provider->getDisplayName())
59
->setPolicyObject($provider);
60
61
$status = $provider->newStatus();
62
63
$header_icon = $status->getStatusHeaderIcon();
64
$header_color = $status->getStatusHeaderColor();
65
$header_name = $status->getName();
66
if ($header_icon !== null) {
67
$view->setStatus($header_icon, $header_color, $header_name);
68
}
69
70
return $view;
71
}
72
73
private function buildPropertiesView(
74
PhabricatorAuthFactorProvider $provider) {
75
$viewer = $this->getViewer();
76
77
$view = id(new PHUIPropertyListView())
78
->setViewer($viewer);
79
80
$view->addProperty(
81
pht('Factor Type'),
82
$provider->getFactor()->getFactorName());
83
84
85
$custom_enroll = $provider->getEnrollMessage();
86
if ($custom_enroll !== null && strlen($custom_enroll)) {
87
$view->addSectionHeader(
88
pht('Custom Enroll Message'),
89
PHUIPropertyListView::ICON_SUMMARY);
90
$view->addTextContent(
91
new PHUIRemarkupView($viewer, $custom_enroll));
92
}
93
94
return $view;
95
}
96
97
private function buildCurtain(PhabricatorAuthFactorProvider $provider) {
98
$viewer = $this->getViewer();
99
$id = $provider->getID();
100
101
$can_edit = PhabricatorPolicyFilter::hasCapability(
102
$viewer,
103
$provider,
104
PhabricatorPolicyCapability::CAN_EDIT);
105
106
$curtain = $this->newCurtainView($provider);
107
108
$curtain->addAction(
109
id(new PhabricatorActionView())
110
->setName(pht('Edit MFA Provider'))
111
->setIcon('fa-pencil')
112
->setHref($this->getApplicationURI("mfa/edit/{$id}/"))
113
->setDisabled(!$can_edit)
114
->setWorkflow(!$can_edit));
115
116
$curtain->addAction(
117
id(new PhabricatorActionView())
118
->setName(pht('Customize Enroll Message'))
119
->setIcon('fa-commenting-o')
120
->setHref($this->getApplicationURI("mfa/message/{$id}/"))
121
->setDisabled(!$can_edit)
122
->setWorkflow(true));
123
124
return $curtain;
125
}
126
127
}
128
129