@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add auth.querypublickeys to retrieve public keys

Summary:
Fixes T6484. I primarily need this to synchronize device public keys in the Phabricator cluster so the new stuff in T2783 works.

Although, actually, maybe I don't really need it. But I wrote it anyway and it's desirable to have sooner or later.

Test Plan: Ran method.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T6484

Differential Revision: https://secure.phabricator.com/D11163

+100
+4
src/__phutil_library_map__.php
··· 1333 1333 'PhabricatorAuthApplication' => 'applications/auth/application/PhabricatorAuthApplication.php', 1334 1334 'PhabricatorAuthAuthFactorPHIDType' => 'applications/auth/phid/PhabricatorAuthAuthFactorPHIDType.php', 1335 1335 'PhabricatorAuthAuthProviderPHIDType' => 'applications/auth/phid/PhabricatorAuthAuthProviderPHIDType.php', 1336 + 'PhabricatorAuthConduitAPIMethod' => 'applications/auth/conduit/PhabricatorAuthConduitAPIMethod.php', 1336 1337 'PhabricatorAuthConfirmLinkController' => 'applications/auth/controller/PhabricatorAuthConfirmLinkController.php', 1337 1338 'PhabricatorAuthController' => 'applications/auth/controller/PhabricatorAuthController.php', 1338 1339 'PhabricatorAuthDAO' => 'applications/auth/storage/PhabricatorAuthDAO.php', ··· 1379 1380 'PhabricatorAuthProviderConfigQuery' => 'applications/auth/query/PhabricatorAuthProviderConfigQuery.php', 1380 1381 'PhabricatorAuthProviderConfigTransaction' => 'applications/auth/storage/PhabricatorAuthProviderConfigTransaction.php', 1381 1382 'PhabricatorAuthProviderConfigTransactionQuery' => 'applications/auth/query/PhabricatorAuthProviderConfigTransactionQuery.php', 1383 + 'PhabricatorAuthQueryPublicKeysConduitAPIMethod' => 'applications/auth/conduit/PhabricatorAuthQueryPublicKeysConduitAPIMethod.php', 1382 1384 'PhabricatorAuthRegisterController' => 'applications/auth/controller/PhabricatorAuthRegisterController.php', 1383 1385 'PhabricatorAuthRevokeTokenController' => 'applications/auth/controller/PhabricatorAuthRevokeTokenController.php', 1384 1386 'PhabricatorAuthSSHKey' => 'applications/auth/storage/PhabricatorAuthSSHKey.php', ··· 4551 4553 'PhabricatorAuthApplication' => 'PhabricatorApplication', 4552 4554 'PhabricatorAuthAuthFactorPHIDType' => 'PhabricatorPHIDType', 4553 4555 'PhabricatorAuthAuthProviderPHIDType' => 'PhabricatorPHIDType', 4556 + 'PhabricatorAuthConduitAPIMethod' => 'ConduitAPIMethod', 4554 4557 'PhabricatorAuthConfirmLinkController' => 'PhabricatorAuthController', 4555 4558 'PhabricatorAuthController' => 'PhabricatorController', 4556 4559 'PhabricatorAuthDAO' => 'PhabricatorLiskDAO', ··· 4599 4602 'PhabricatorAuthProviderConfigQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 4600 4603 'PhabricatorAuthProviderConfigTransaction' => 'PhabricatorApplicationTransaction', 4601 4604 'PhabricatorAuthProviderConfigTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 4605 + 'PhabricatorAuthQueryPublicKeysConduitAPIMethod' => 'PhabricatorAuthConduitAPIMethod', 4602 4606 'PhabricatorAuthRegisterController' => 'PhabricatorAuthController', 4603 4607 'PhabricatorAuthRevokeTokenController' => 'PhabricatorAuthController', 4604 4608 'PhabricatorAuthSSHKey' => array(
+19
src/applications/auth/conduit/PhabricatorAuthConduitAPIMethod.php
··· 1 + <?php 2 + 3 + abstract class PhabricatorAuthConduitAPIMethod extends ConduitAPIMethod { 4 + 5 + final public function getApplication() { 6 + return PhabricatorApplication::getByClass( 7 + 'PhabricatorAuthApplication'); 8 + } 9 + 10 + public function getMethodStatus() { 11 + return self::METHOD_STATUS_UNSTABLE; 12 + } 13 + 14 + public function getMethodStatusDescription() { 15 + return pht( 16 + 'These methods are recently introduced and subject to change.'); 17 + } 18 + 19 + }
+77
src/applications/auth/conduit/PhabricatorAuthQueryPublicKeysConduitAPIMethod.php
··· 1 + <?php 2 + 3 + final class PhabricatorAuthQueryPublicKeysConduitAPIMethod 4 + extends PhabricatorAuthConduitAPIMethod { 5 + 6 + public function getAPIMethodName() { 7 + return 'auth.querypublickeys'; 8 + } 9 + 10 + public function getMethodDescription() { 11 + return pht('Query public keys.'); 12 + } 13 + 14 + public function defineParamTypes() { 15 + return array( 16 + 'ids' => 'optional list<id>', 17 + 'objectPHIDs' => 'optional list<phid>', 18 + 'keys' => 'optional list<string>', 19 + ) + self::getPagerParamTypes(); 20 + } 21 + 22 + public function defineReturnType() { 23 + return 'result-set'; 24 + } 25 + 26 + public function defineErrorTypes() { 27 + return array(); 28 + } 29 + 30 + protected function execute(ConduitAPIRequest $request) { 31 + $viewer = $request->getUser(); 32 + 33 + $query = id(new PhabricatorAuthSSHKeyQuery()) 34 + ->setViewer($viewer); 35 + 36 + $ids = $request->getValue('ids'); 37 + if ($ids !== null) { 38 + $query->withIDs($ids); 39 + } 40 + 41 + $object_phids = $request->getValue('objectPHIDs'); 42 + if ($object_phids !== null) { 43 + $query->withObjectPHIDs($object_phids); 44 + } 45 + 46 + $keys = $request->getValue('keys'); 47 + if ($keys !== null) { 48 + $key_objects = array(); 49 + foreach ($keys as $key) { 50 + $key_objects[] = PhabricatorAuthSSHPublicKey::newFromRawKey($key); 51 + } 52 + 53 + $query->withKeys($key_objects); 54 + } 55 + 56 + $pager = $this->newPager($request); 57 + $public_keys = $query->executeWithCursorPager($pager); 58 + 59 + $data = array(); 60 + foreach ($public_keys as $public_key) { 61 + $data[] = array( 62 + 'id' => $public_key->getID(), 63 + 'name' => $public_key->getName(), 64 + 'objectPHID' => $public_key->getObjectPHID(), 65 + 'isTrusted' => (bool)$public_key->getIsTrusted(), 66 + 'key' => $public_key->getEntireKey(), 67 + ); 68 + } 69 + 70 + $results = array( 71 + 'data' => $data, 72 + ); 73 + 74 + return $this->addPagerResults($results, $pager); 75 + } 76 + 77 + }