Summary:
Ref T603. Ref T2625.
Long chain of "doing the right thing" here: I want to clean this up, so I can clean up the Conduit logs, so I can add a setup issue for deprecated method calls, so I can remove deprecated methods, so I can get rid of `DifferentialRevisionListData`, so I can make Differntial policy-aware.
Adds modern infrastructure and UI to all of the Conduit interfaces (except only partially for the logs, that will be the next diff).
Test Plan:
{F48201}
{F48202}
{F48203}
{F48204}
{F48206}
This will get further updates in the next diff:
{F48205}
Reviewers: btrahan, chad
Reviewed By: chad
CC: aran
Maniphest Tasks: T603, T2625
Differential Revision: https://secure.phabricator.com/D6331
68 lines
1.8 KiB
PHP
68 lines
1.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group conduit
|
|
*/
|
|
final class PhabricatorConduitTokenController
|
|
extends PhabricatorConduitController {
|
|
|
|
public function processRequest() {
|
|
|
|
$user = $this->getRequest()->getUser();
|
|
|
|
// Ideally we'd like to verify this, but it's fine to leave it unguarded
|
|
// for now and verifying it would need some Ajax junk or for the user to
|
|
// click a button or similar.
|
|
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
|
|
|
|
$old_token = id(new PhabricatorConduitCertificateToken())
|
|
->loadOneWhere(
|
|
'userPHID = %s',
|
|
$user->getPHID());
|
|
if ($old_token) {
|
|
$old_token->delete();
|
|
}
|
|
|
|
$token = id(new PhabricatorConduitCertificateToken())
|
|
->setUserPHID($user->getPHID())
|
|
->setToken(Filesystem::readRandomCharacters(40))
|
|
->save();
|
|
|
|
unset($unguarded);
|
|
|
|
$pre_instructions = pht(
|
|
'Copy and paste this token into the prompt given to you by '.
|
|
'`arc install-certificate`');
|
|
|
|
$post_instructions = pht(
|
|
'After you copy and paste this token, `arc` will complete '.
|
|
'the certificate install process for you.');
|
|
|
|
$form = id(new AphrontFormView())
|
|
->setUser($user)
|
|
->appendRemarkupInstructions($pre_instructions)
|
|
->appendChild(
|
|
id(new AphrontFormTextAreaControl())
|
|
->setLabel(pht('Token'))
|
|
->setHeight(AphrontFormTextAreaControl::HEIGHT_VERY_SHORT)
|
|
->setValue($token->getToken()))
|
|
->appendRemarkupInstructions($post_instructions);
|
|
|
|
$crumbs = $this->buildApplicationCrumbs();
|
|
$crumbs->addCrumb(
|
|
id(new PhabricatorCrumbView())
|
|
->setName(pht('Install Certificate')));
|
|
|
|
return $this->buildApplicationPage(
|
|
array(
|
|
$crumbs,
|
|
$form,
|
|
),
|
|
array(
|
|
'title' => pht('Certificate Install Token'),
|
|
'device' => true,
|
|
'dust' => true,
|
|
));
|
|
}
|
|
}
|