Page MenuHomePhabricator

D19915.diff
No OneTemporary

D19915.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/auth/controller/PhabricatorAuthRegisterController.php b/src/applications/auth/controller/PhabricatorAuthRegisterController.php
--- a/src/applications/auth/controller/PhabricatorAuthRegisterController.php
+++ b/src/applications/auth/controller/PhabricatorAuthRegisterController.php
@@ -416,7 +416,26 @@
}
if ($is_setup) {
- $editor->makeAdminUser($user, true);
+ $xactions = array();
+ $xactions[] = id(new PhabricatorUserTransaction())
+ ->setTransactionType(
+ PhabricatorUserEmpowerTransaction::TRANSACTIONTYPE)
+ ->setNewValue(true);
+
+ $actor = PhabricatorUser::getOmnipotentUser();
+ $content_source = PhabricatorContentSource::newFromRequest(
+ $request);
+
+ $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);
}
$account->setUserPHID($user->getPHID());
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_admin = $actor->getIsAdmin();
+ $is_omnipotent = $actor->isOmnipotent();
+
+ if (!$is_admin && !$is_omnipotent) {
$errors[] = $this->newInvalidError(
pht('You must be an administrator to create administrators.'),
$xaction);

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 16, 6:36 PM (4 d, 20 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7595604
Default Alt Text
D19915.diff (3 KB)

Event Timeline