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:
parent
3b6a651b69
commit
89d1403fe8
1 changed files with 26 additions and 0 deletions
|
@ -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.',
|
||||
|
|
Loading…
Reference in a new issue