1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-10 08:52:39 +01:00

Explicitly decline to add commit authors as auditors from Herald

Summary:
Fixes T12304. If you have a Herald rule which tries to add a commit author as an auditor, it fails validation when trying to apply.

Stop trying to apply these transactions, and explicitly tell the user why. Differential already uses a similar ruleset around reviewers, but Audit was using older code.

Test Plan:
  - Wrote a Herald rule to add A, B and C as auditors.
  - Committed as A.
  - After change, saw B and C added with transacript guidance that A was the author.

{F3235660}

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T12304

Differential Revision: https://secure.phabricator.com/D17404
This commit is contained in:
epriestley 2017-02-23 14:42:42 -08:00
parent 3b6a651b69
commit 89d1403fe8

View file

@ -3,6 +3,7 @@
abstract class DiffusionAuditorsHeraldAction
extends HeraldAction {
const DO_AUTHORS = 'do.authors';
const DO_ADD_AUDITORS = 'do.add-auditors';
public function getActionGroupKey() {
@ -19,6 +20,22 @@ abstract class DiffusionAuditorsHeraldAction
$auditors = $object->getAudits();
// Don't try to add commit authors as auditors.
$authors = array();
foreach ($phids as $key => $phid) {
if ($phid == $object->getAuthorPHID()) {
$authors[] = $phid;
unset($phids[$key]);
}
}
if ($authors) {
$this->logEffect(self::DO_AUTHORS, $authors);
if (!$phids) {
return;
}
}
$current = array();
foreach ($auditors as $auditor) {
if ($auditor->isInteresting()) {
@ -53,6 +70,11 @@ abstract class DiffusionAuditorsHeraldAction
protected function getActionEffectMap() {
return array(
self::DO_AUTHORS => array(
'icon' => 'fa-user',
'color' => 'grey',
'name' => pht('Commit Author'),
),
self::DO_ADD_AUDITORS => array(
'icon' => 'fa-user',
'color' => 'green',
@ -63,6 +85,10 @@ abstract class DiffusionAuditorsHeraldAction
protected function renderActionEffectDescription($type, $data) {
switch ($type) {
case self::DO_AUTHORS:
return pht(
'Declined to add commit author as auditor: %s.',
$this->renderHandleList($data));
case self::DO_ADD_AUDITORS:
return pht(
'Added %s auditor(s): %s.',