mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-28 16:30:59 +01:00
Add an edge between Passphrase credentials and objects which use them
Summary: Ref T4122. Add an edge to keep track of where a credential is used, and show it in the UI. Test Plan: See "Used By": {F84099} Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T4122 Differential Revision: https://secure.phabricator.com/D7628
This commit is contained in:
parent
61b26255bb
commit
819f899013
5 changed files with 39 additions and 1 deletions
15
resources/sql/patches/20131121.passphraseedge.sql
Normal file
15
resources/sql/patches/20131121.passphraseedge.sql
Normal file
|
@ -0,0 +1,15 @@
|
|||
CREATE TABLE {$NAMESPACE}_passphrase.edge (
|
||||
src VARCHAR(64) NOT NULL COLLATE utf8_bin,
|
||||
type VARCHAR(64) NOT NULL COLLATE utf8_bin,
|
||||
dst VARCHAR(64) NOT NULL COLLATE utf8_bin,
|
||||
dateCreated INT UNSIGNED NOT NULL,
|
||||
seq INT UNSIGNED NOT NULL,
|
||||
dataID INT UNSIGNED,
|
||||
PRIMARY KEY (src, type, dst),
|
||||
KEY (src, type, dateCreated, seq)
|
||||
) ENGINE=InnoDB, COLLATE utf8_general_ci;
|
||||
|
||||
CREATE TABLE {$NAMESPACE}_passphrase.edgedata (
|
||||
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
data LONGTEXT NOT NULL COLLATE utf8_bin
|
||||
) ENGINE=InnoDB, COLLATE utf8_general_ci;
|
|
@ -151,6 +151,17 @@ final class PassphraseCredentialViewController extends PassphraseController {
|
|||
pht('Username'),
|
||||
$credential->getUsername());
|
||||
|
||||
$used_by_phids = PhabricatorEdgeQuery::loadDestinationPHIDs(
|
||||
$credential->getPHID(),
|
||||
PhabricatorEdgeConfig::TYPE_CREDENTIAL_USED_BY_OBJECT);
|
||||
|
||||
if ($used_by_phids) {
|
||||
$this->loadHandles($used_by_phids);
|
||||
$properties->addProperty(
|
||||
pht('Used By'),
|
||||
$this->renderHandlesForPHIDs($used_by_phids));
|
||||
}
|
||||
|
||||
$description = $credential->getDescription();
|
||||
if (strlen($description)) {
|
||||
$properties->addSectionHeader(
|
||||
|
|
|
@ -19,6 +19,7 @@ final class PassphraseCredential extends PassphraseDAO
|
|||
return id(new PassphraseCredential())
|
||||
->setName('')
|
||||
->setUsername('')
|
||||
->setDescription('')
|
||||
->setIsDestroyed(0)
|
||||
->setViewPolicy($actor->getPHID())
|
||||
->setEditPolicy($actor->getPHID());
|
||||
|
|
|
@ -60,6 +60,9 @@ final class PhabricatorEdgeConfig extends PhabricatorEdgeConstants {
|
|||
const TYPE_MOCK_HAS_TASK = 37;
|
||||
const TYPE_TASK_HAS_MOCK = 38;
|
||||
|
||||
const TYPE_OBJECT_USES_CREDENTIAL = 39;
|
||||
const TYPE_CREDENTIAL_USED_BY_OBJECT = 40;
|
||||
|
||||
const TYPE_TEST_NO_CYCLE = 9000;
|
||||
|
||||
const TYPE_PHOB_HAS_ASANATASK = 80001;
|
||||
|
@ -71,6 +74,7 @@ final class PhabricatorEdgeConfig extends PhabricatorEdgeConstants {
|
|||
const TYPE_PHOB_HAS_JIRAISSUE = 80004;
|
||||
const TYPE_JIRAISSUE_HAS_PHOB = 80005;
|
||||
|
||||
|
||||
public static function getInverse($edge_type) {
|
||||
static $map = array(
|
||||
self::TYPE_TASK_HAS_COMMIT => self::TYPE_COMMIT_HAS_TASK,
|
||||
|
@ -134,7 +138,10 @@ final class PhabricatorEdgeConfig extends PhabricatorEdgeConstants {
|
|||
self::TYPE_REVIEWER_FOR_DREV => self::TYPE_DREV_HAS_REVIEWER,
|
||||
|
||||
self::TYPE_PHOB_HAS_JIRAISSUE => self::TYPE_JIRAISSUE_HAS_PHOB,
|
||||
self:: TYPE_JIRAISSUE_HAS_PHOB => self::TYPE_PHOB_HAS_JIRAISSUE
|
||||
self::TYPE_JIRAISSUE_HAS_PHOB => self::TYPE_PHOB_HAS_JIRAISSUE,
|
||||
|
||||
self::TYPE_OBJECT_USES_CREDENTIAL => self::TYPE_CREDENTIAL_USED_BY_OBJECT,
|
||||
self::TYPE_CREDENTIAL_USED_BY_OBJECT => self::TYPE_OBJECT_USES_CREDENTIAL,
|
||||
);
|
||||
|
||||
return idx($map, $edge_type);
|
||||
|
|
|
@ -1772,6 +1772,10 @@ final class PhabricatorBuiltinPatchList extends PhabricatorSQLPatchList {
|
|||
'type' => 'sql',
|
||||
'name' => $this->getPatchPath('20131120.nuancesourcetype.sql'),
|
||||
),
|
||||
'20131121.passphraseedge.sql' => array(
|
||||
'type' => 'sql',
|
||||
'name' => $this->getPatchPath('20131121.passphraseedge.sql'),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue