mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-28 09:42:41 +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
33 lines
817 B
PHP
33 lines
817 B
PHP
<?php
|
|
|
|
abstract class PhabricatorAuthSSHKeyController
|
|
extends PhabricatorAuthController {
|
|
|
|
protected function newKeyForObjectPHID($object_phid) {
|
|
$viewer = $this->getViewer();
|
|
|
|
$object = id(new PhabricatorObjectQuery())
|
|
->setViewer($viewer)
|
|
->withPHIDs(array($object_phid))
|
|
->requireCapabilities(
|
|
array(
|
|
PhabricatorPolicyCapability::CAN_VIEW,
|
|
PhabricatorPolicyCapability::CAN_EDIT,
|
|
))
|
|
->executeOne();
|
|
if (!$object) {
|
|
return null;
|
|
}
|
|
|
|
// If this kind of object can't have SSH keys, don't let the viewer
|
|
// add them.
|
|
if (!($object instanceof PhabricatorSSHPublicKeyInterface)) {
|
|
return null;
|
|
}
|
|
|
|
return id(new PhabricatorAuthSSHKey())
|
|
->setObjectPHID($object_phid)
|
|
->attachObject($object);
|
|
}
|
|
|
|
}
|