Page MenuHomePhabricator

D19915.id47535.diff
No OneTemporary

D19915.id47535.diff

diff --git a/scripts/user/account_admin.php b/scripts/user/account_admin.php
--- a/scripts/user/account_admin.php
+++ b/scripts/user/account_admin.php
@@ -200,9 +200,28 @@
$editor->updateUser($user, $verify_email);
}
- $editor->makeAdminUser($user, $set_admin);
$editor->makeSystemAgentUser($user, $set_system_agent);
+ $xactions = array();
+ $xactions[] = id(new PhabricatorUserTransaction())
+ ->setTransactionType(
+ PhabricatorUserEmpowerTransaction::TRANSACTIONTYPE)
+ ->setNewValue($set_admin);
+
+ $actor = PhabricatorUser::getOmnipotentUser();
+ $content_source = PhabricatorContentSource::newForSource(
+ PhabricatorConsoleContentSource::SOURCECONST);
+
+ $people_application_phid = id(new PhabricatorPeopleApplication())->getPHID();
+
+ $transaction_editor = id(new PhabricatorUserTransactionEditor())
+ ->setActor($actor)
+ ->setActingAsPHID($people_application_phid)
+ ->setContentSource($content_source)
+ ->setContinueOnMissingFields(true);
+
+ $transaction_editor->applyTransactions($user, $xactions);
+
$user->saveTransaction();
echo pht('Saved changes.')."\n";
diff --git a/src/applications/people/xaction/PhabricatorUserEmpowerTransaction.php b/src/applications/people/xaction/PhabricatorUserEmpowerTransaction.php
--- a/src/applications/people/xaction/PhabricatorUserEmpowerTransaction.php
+++ b/src/applications/people/xaction/PhabricatorUserEmpowerTransaction.php
@@ -45,7 +45,10 @@
'status as an administrator.'), $xaction);
}
- if (!$actor->getIsAdmin()) {
+ $is_actor_admin = $actor->getIsAdmin();
+ $is_omnipotent = $actor === PhabricatorUser::getOmnipotentUser();
+
+ if (!$is_actor_admin && !$is_omnipotent) {
$errors[] = $this->newInvalidError(
pht('You must be an administrator to create administrators.'),
$xaction);

File Metadata

Mime Type
text/plain
Expires
Fri, Mar 7, 12:44 PM (2 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7332592
Default Alt Text
D19915.id47535.diff (1 KB)

Event Timeline