Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/conduit/settings/PhabricatorConduitTokensSettingsPanel.php
12256 views
1
<?php
2
3
final class PhabricatorConduitTokensSettingsPanel
4
extends PhabricatorSettingsPanel {
5
6
public function isManagementPanel() {
7
if ($this->getUser()->getIsMailingList()) {
8
return false;
9
}
10
11
return true;
12
}
13
14
public function getPanelKey() {
15
return 'apitokens';
16
}
17
18
public function getPanelName() {
19
return pht('Conduit API Tokens');
20
}
21
22
public function getPanelMenuIcon() {
23
return id(new PhabricatorConduitApplication())->getIcon();
24
}
25
26
public function getPanelGroupKey() {
27
return PhabricatorSettingsLogsPanelGroup::PANELGROUPKEY;
28
}
29
30
public function isEnabled() {
31
return true;
32
}
33
34
public function processRequest(AphrontRequest $request) {
35
$viewer = $this->getViewer();
36
$user = $this->getUser();
37
38
$tokens = id(new PhabricatorConduitTokenQuery())
39
->setViewer($viewer)
40
->withObjectPHIDs(array($user->getPHID()))
41
->withExpired(false)
42
->requireCapabilities(
43
array(
44
PhabricatorPolicyCapability::CAN_VIEW,
45
PhabricatorPolicyCapability::CAN_EDIT,
46
))
47
->execute();
48
49
$rows = array();
50
foreach ($tokens as $token) {
51
$rows[] = array(
52
javelin_tag(
53
'a',
54
array(
55
'href' => '/conduit/token/edit/'.$token->getID().'/',
56
'sigil' => 'workflow',
57
),
58
$token->getPublicTokenName()),
59
PhabricatorConduitToken::getTokenTypeName($token->getTokenType()),
60
phabricator_datetime($token->getDateCreated(), $viewer),
61
($token->getExpires()
62
? phabricator_datetime($token->getExpires(), $viewer)
63
: pht('Never')),
64
javelin_tag(
65
'a',
66
array(
67
'class' => 'button small button-grey',
68
'href' => '/conduit/token/terminate/'.$token->getID().'/',
69
'sigil' => 'workflow',
70
),
71
pht('Terminate')),
72
);
73
}
74
75
$table = new AphrontTableView($rows);
76
$table->setNoDataString(pht("You don't have any active API tokens."));
77
$table->setHeaders(
78
array(
79
pht('Token'),
80
pht('Type'),
81
pht('Created'),
82
pht('Expires'),
83
null,
84
));
85
$table->setColumnClasses(
86
array(
87
'wide pri',
88
'',
89
'right',
90
'right',
91
'action',
92
));
93
94
$generate_button = id(new PHUIButtonView())
95
->setText(pht('Generate Token'))
96
->setHref('/conduit/token/edit/?objectPHID='.$user->getPHID())
97
->setTag('a')
98
->setWorkflow(true)
99
->setIcon('fa-plus');
100
101
$terminate_button = id(new PHUIButtonView())
102
->setText(pht('Terminate Tokens'))
103
->setHref('/conduit/token/terminate/?objectPHID='.$user->getPHID())
104
->setTag('a')
105
->setWorkflow(true)
106
->setIcon('fa-exclamation-triangle')
107
->setColor(PHUIButtonView::RED);
108
109
$header = id(new PHUIHeaderView())
110
->setHeader(pht('Active API Tokens'))
111
->addActionLink($generate_button)
112
->addActionLink($terminate_button);
113
114
$panel = id(new PHUIObjectBoxView())
115
->setHeader($header)
116
->setBackground(PHUIObjectBoxView::WHITE_CONFIG)
117
->appendChild($table);
118
119
return $panel;
120
}
121
122
}
123
124