Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/conduit/controller/PhabricatorConduitTokenEditController.php
12256 views
1
<?php
2
3
final class PhabricatorConduitTokenEditController
4
extends PhabricatorConduitController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$viewer = $request->getViewer();
8
$id = $request->getURIData('id');
9
10
if ($id) {
11
$token = id(new PhabricatorConduitTokenQuery())
12
->setViewer($viewer)
13
->withIDs(array($id))
14
->withExpired(false)
15
->requireCapabilities(
16
array(
17
PhabricatorPolicyCapability::CAN_VIEW,
18
PhabricatorPolicyCapability::CAN_EDIT,
19
))
20
->executeOne();
21
if (!$token) {
22
return new Aphront404Response();
23
}
24
25
$object = $token->getObject();
26
27
$is_new = false;
28
$title = pht('View API Token');
29
} else {
30
$object = id(new PhabricatorObjectQuery())
31
->setViewer($viewer)
32
->withPHIDs(array($request->getStr('objectPHID')))
33
->requireCapabilities(
34
array(
35
PhabricatorPolicyCapability::CAN_VIEW,
36
PhabricatorPolicyCapability::CAN_EDIT,
37
))
38
->executeOne();
39
if (!$object) {
40
return new Aphront404Response();
41
}
42
43
$token = PhabricatorConduitToken::initializeNewToken(
44
$object->getPHID(),
45
PhabricatorConduitToken::TYPE_STANDARD);
46
47
$is_new = true;
48
$title = pht('Generate API Token');
49
$submit_button = pht('Generate Token');
50
}
51
52
$panel_uri = id(new PhabricatorConduitTokensSettingsPanel())
53
->setViewer($viewer)
54
->setUser($object)
55
->getPanelURI();
56
57
id(new PhabricatorAuthSessionEngine())->requireHighSecuritySession(
58
$viewer,
59
$request,
60
$panel_uri);
61
62
if ($request->isFormPost()) {
63
$token->save();
64
65
if ($is_new) {
66
$token_uri = '/conduit/token/edit/'.$token->getID().'/';
67
} else {
68
$token_uri = $panel_uri;
69
}
70
71
return id(new AphrontRedirectResponse())->setURI($token_uri);
72
}
73
74
$dialog = $this->newDialog()
75
->setTitle($title)
76
->addHiddenInput('objectPHID', $object->getPHID());
77
78
if ($is_new) {
79
$dialog
80
->appendParagraph(pht('Generate a new API token?'))
81
->addSubmitButton($submit_button)
82
->addCancelButton($panel_uri);
83
} else {
84
$form = id(new AphrontFormView())
85
->setUser($viewer);
86
87
if ($token->getTokenType() === PhabricatorConduitToken::TYPE_CLUSTER) {
88
$dialog->appendChild(
89
pht(
90
'This token is automatically generated, and used to make '.
91
'requests between nodes in a cluster. You can not use this '.
92
'token in external applications.'));
93
} else {
94
$form->appendChild(
95
id(new AphrontFormTextControl())
96
->setLabel(pht('Token'))
97
->setValue($token->getToken()));
98
}
99
100
$dialog
101
->appendForm($form)
102
->addCancelButton($panel_uri, pht('Done'));
103
}
104
105
return $dialog;
106
}
107
108
}
109
110