Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/auth/controller/config/PhabricatorAuthProviderViewController.php
12261 views
1
<?php
2
3
final class PhabricatorAuthProviderViewController
4
extends PhabricatorAuthProviderConfigController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$this->requireApplicationCapability(
8
AuthManageProvidersCapability::CAPABILITY);
9
10
$viewer = $this->getViewer();
11
$id = $request->getURIData('id');
12
13
$config = id(new PhabricatorAuthProviderConfigQuery())
14
->setViewer($viewer)
15
->requireCapabilities(
16
array(
17
PhabricatorPolicyCapability::CAN_VIEW,
18
PhabricatorPolicyCapability::CAN_EDIT,
19
))
20
->withIDs(array($id))
21
->executeOne();
22
if (!$config) {
23
return new Aphront404Response();
24
}
25
26
$header = $this->buildHeaderView($config);
27
$properties = $this->buildPropertiesView($config);
28
$curtain = $this->buildCurtain($config);
29
30
$timeline = $this->buildTransactionTimeline(
31
$config,
32
new PhabricatorAuthProviderConfigTransactionQuery());
33
$timeline->setShouldTerminate(true);
34
35
$view = id(new PHUITwoColumnView())
36
->setHeader($header)
37
->setCurtain($curtain)
38
->addPropertySection(pht('Details'), $properties)
39
->setMainColumn($timeline);
40
41
$crumbs = $this->buildApplicationCrumbs()
42
->addTextCrumb($config->getObjectName())
43
->setBorder(true);
44
45
return $this->newPage()
46
->setTitle(pht('Auth Provider: %s', $config->getDisplayName()))
47
->setCrumbs($crumbs)
48
->appendChild($view);
49
}
50
51
private function buildHeaderView(PhabricatorAuthProviderConfig $config) {
52
$viewer = $this->getViewer();
53
54
$view = id(new PHUIHeaderView())
55
->setViewer($viewer)
56
->setHeader($config->getDisplayName());
57
58
if ($config->getIsEnabled()) {
59
$view->setStatus('fa-check', 'bluegrey', pht('Enabled'));
60
} else {
61
$view->setStatus('fa-ban', 'red', pht('Disabled'));
62
}
63
64
return $view;
65
}
66
67
private function buildCurtain(PhabricatorAuthProviderConfig $config) {
68
$viewer = $this->getViewer();
69
$id = $config->getID();
70
71
$can_edit = PhabricatorPolicyFilter::hasCapability(
72
$viewer,
73
$config,
74
PhabricatorPolicyCapability::CAN_EDIT);
75
76
$curtain = $this->newCurtainView($config);
77
78
$curtain->addAction(
79
id(new PhabricatorActionView())
80
->setName(pht('Edit Auth Provider'))
81
->setIcon('fa-pencil')
82
->setHref($this->getApplicationURI("config/edit/{$id}/"))
83
->setDisabled(!$can_edit)
84
->setWorkflow(!$can_edit));
85
86
if ($config->getIsEnabled()) {
87
$disable_uri = $this->getApplicationURI('config/disable/'.$id.'/');
88
$disable_icon = 'fa-ban';
89
$disable_text = pht('Disable Provider');
90
} else {
91
$disable_uri = $this->getApplicationURI('config/enable/'.$id.'/');
92
$disable_icon = 'fa-check';
93
$disable_text = pht('Enable Provider');
94
}
95
96
$curtain->addAction(
97
id(new PhabricatorActionView())
98
->setName($disable_text)
99
->setIcon($disable_icon)
100
->setHref($disable_uri)
101
->setDisabled(!$can_edit)
102
->setWorkflow(true));
103
104
return $curtain;
105
}
106
107
private function buildPropertiesView(PhabricatorAuthProviderConfig $config) {
108
$viewer = $this->getViewer();
109
110
$view = id(new PHUIPropertyListView())
111
->setViewer($viewer);
112
113
$view->addProperty(
114
pht('Provider Type'),
115
$config->getProvider()->getProviderName());
116
117
$status = $this->buildStatus($config);
118
$view->addProperty(pht('Status'), $status);
119
120
return $view;
121
}
122
123
private function buildStatus(PhabricatorAuthProviderConfig $config) {
124
$viewer = $this->getViewer();
125
$view = id(new PHUIStatusListView())
126
->setViewer($viewer);
127
128
$icon_enabled = PHUIStatusItemView::ICON_ACCEPT;
129
$icon_disabled = PHUIStatusItemView::ICON_REJECT;
130
131
$icon_map = array(
132
true => $icon_enabled,
133
false => $icon_disabled,
134
);
135
136
$color_map = array(
137
true => 'green',
138
false => 'red',
139
);
140
141
$provider = $config->getProvider();
142
143
$view->addItem(
144
id(new PHUIStatusItemView())
145
->setIcon(
146
$icon_map[$config->getIsEnabled()],
147
$color_map[$config->getIsEnabled()])
148
->setTarget(pht('Provider Enabled')));
149
150
$view->addItem(
151
id(new PHUIStatusItemView())
152
->setIcon(
153
$icon_map[$config->getShouldAllowLogin()],
154
$color_map[$config->getShouldAllowLogin()])
155
->setTarget(pht('Allow Logins')));
156
157
$view->addItem(
158
id(new PHUIStatusItemView())
159
->setIcon(
160
$icon_map[$config->getShouldAllowRegistration()],
161
$color_map[$config->getShouldAllowRegistration()])
162
->setTarget(pht('Allow Registration')));
163
164
$view->addItem(
165
id(new PHUIStatusItemView())
166
->setIcon(
167
$icon_map[$config->getShouldAllowLink()],
168
$color_map[$config->getShouldAllowLink()])
169
->setTarget(pht('Allow Account Linking')));
170
171
$view->addItem(
172
id(new PHUIStatusItemView())
173
->setIcon(
174
$icon_map[$config->getShouldAllowUnlink()],
175
$color_map[$config->getShouldAllowUnlink()])
176
->setTarget(pht('Allow Account Unlinking')));
177
178
if ($provider->shouldAllowEmailTrustConfiguration()) {
179
$view->addItem(
180
id(new PHUIStatusItemView())
181
->setIcon(
182
$icon_map[$config->getShouldTrustEmails()],
183
$color_map[$config->getShouldTrustEmails()])
184
->setTarget(pht('Trust Email Addresses')));
185
}
186
187
if ($provider->supportsAutoLogin()) {
188
$view->addItem(
189
id(new PHUIStatusItemView())
190
->setIcon(
191
$icon_map[$config->getShouldAutoLogin()],
192
$color_map[$config->getShouldAutoLogin()])
193
->setTarget(pht('Allow Auto Login')));
194
}
195
196
return $view;
197
}
198
199
}
200
201