Path: blob/master/src/applications/conduit/controller/PhabricatorConduitTokenEditController.php
12256 views
<?php12final class PhabricatorConduitTokenEditController3extends PhabricatorConduitController {45public function handleRequest(AphrontRequest $request) {6$viewer = $request->getViewer();7$id = $request->getURIData('id');89if ($id) {10$token = id(new PhabricatorConduitTokenQuery())11->setViewer($viewer)12->withIDs(array($id))13->withExpired(false)14->requireCapabilities(15array(16PhabricatorPolicyCapability::CAN_VIEW,17PhabricatorPolicyCapability::CAN_EDIT,18))19->executeOne();20if (!$token) {21return new Aphront404Response();22}2324$object = $token->getObject();2526$is_new = false;27$title = pht('View API Token');28} else {29$object = id(new PhabricatorObjectQuery())30->setViewer($viewer)31->withPHIDs(array($request->getStr('objectPHID')))32->requireCapabilities(33array(34PhabricatorPolicyCapability::CAN_VIEW,35PhabricatorPolicyCapability::CAN_EDIT,36))37->executeOne();38if (!$object) {39return new Aphront404Response();40}4142$token = PhabricatorConduitToken::initializeNewToken(43$object->getPHID(),44PhabricatorConduitToken::TYPE_STANDARD);4546$is_new = true;47$title = pht('Generate API Token');48$submit_button = pht('Generate Token');49}5051$panel_uri = id(new PhabricatorConduitTokensSettingsPanel())52->setViewer($viewer)53->setUser($object)54->getPanelURI();5556id(new PhabricatorAuthSessionEngine())->requireHighSecuritySession(57$viewer,58$request,59$panel_uri);6061if ($request->isFormPost()) {62$token->save();6364if ($is_new) {65$token_uri = '/conduit/token/edit/'.$token->getID().'/';66} else {67$token_uri = $panel_uri;68}6970return id(new AphrontRedirectResponse())->setURI($token_uri);71}7273$dialog = $this->newDialog()74->setTitle($title)75->addHiddenInput('objectPHID', $object->getPHID());7677if ($is_new) {78$dialog79->appendParagraph(pht('Generate a new API token?'))80->addSubmitButton($submit_button)81->addCancelButton($panel_uri);82} else {83$form = id(new AphrontFormView())84->setUser($viewer);8586if ($token->getTokenType() === PhabricatorConduitToken::TYPE_CLUSTER) {87$dialog->appendChild(88pht(89'This token is automatically generated, and used to make '.90'requests between nodes in a cluster. You can not use this '.91'token in external applications.'));92} else {93$form->appendChild(94id(new AphrontFormTextControl())95->setLabel(pht('Token'))96->setValue($token->getToken()));97}9899$dialog100->appendForm($form)101->addCancelButton($panel_uri, pht('Done'));102}103104return $dialog;105}106107}108109110