mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-18 11:30:55 +01:00
32cdc23efc
Summary: Ref T5833. I want to add SSH keys to Almanac devices, but the edit workflows for them are currently bound tightly to users. Instead, decouple key management from users and the settings panel. Test Plan: - Uploaded, generated, edited and deleted SSH keys. - Hit missing name, missing key, bad key format, duplicate key errors. - Edited/generated/deleted/etc keys for a bot user as an administrator. - Got HiSec'd on everything. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T5833 Differential Revision: https://secure.phabricator.com/D10824
48 lines
1.4 KiB
PHP
48 lines
1.4 KiB
PHP
<?php
|
|
|
|
final class PhabricatorAuthSSHKeyDeleteController
|
|
extends PhabricatorAuthSSHKeyController {
|
|
|
|
public function handleRequest(AphrontRequest $request) {
|
|
$viewer = $this->getViewer();
|
|
|
|
$key = id(new PhabricatorAuthSSHKeyQuery())
|
|
->setViewer($viewer)
|
|
->withIDs(array($request->getURIData('id')))
|
|
->requireCapabilities(
|
|
array(
|
|
PhabricatorPolicyCapability::CAN_VIEW,
|
|
PhabricatorPolicyCapability::CAN_EDIT,
|
|
))
|
|
->executeOne();
|
|
if (!$key) {
|
|
return new Aphront404Response();
|
|
}
|
|
|
|
$cancel_uri = $key->getObject()->getSSHPublicKeyManagementURI($viewer);
|
|
|
|
$token = id(new PhabricatorAuthSessionEngine())->requireHighSecuritySession(
|
|
$viewer,
|
|
$request,
|
|
$cancel_uri);
|
|
|
|
if ($request->isFormPost()) {
|
|
// TODO: It would be nice to write an edge transaction here or something.
|
|
$key->delete();
|
|
return id(new AphrontRedirectResponse())->setURI($cancel_uri);
|
|
}
|
|
|
|
$name = phutil_tag('strong', array(), $key->getName());
|
|
|
|
return $this->newDialog()
|
|
->setTitle(pht('Really delete SSH Public Key?'))
|
|
->appendParagraph(
|
|
pht(
|
|
'The key "%s" will be permanently deleted, and you will not longer '.
|
|
'be able to use the corresponding private key to authenticate.',
|
|
$name))
|
|
->addSubmitButton(pht('Delete Public Key'))
|
|
->addCancelButton($cancel_uri);
|
|
}
|
|
|
|
}
|