Похоже, что администраторы Phabricator по какой-то причине считают, что администраторы не должны иметь полного доступа к администрированию пользователей и не предоставляют инструменты для такой задачи (например, https://stackoverflow.com/a/21249019/754982). Один из вариантов - взломать базу данных напрямую, другойсостоит в том, чтобы добавить функциональность в инструмент account_admin.php, который раньше имел эту функциональность (https://secure.phabricator.com/D18901?id=45357).
. Я отправляю патч для этого скрипта, который снова добавляет функциональность. Я не пытаюсь сделать PR длякодовая база Phabricator, однако я не верю, что она будет принята.
From 3340df50268d612c16ac17f48f69a9952688f47e Mon Sep 17 00:00:00 2001
From: root <user@localhost>
Date: Sun, 23 Jun 2019 02:44:24 +0200
Subject: [PATCH] Added possibility of changing passwords
---
scripts/user/account_admin.php | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/scripts/user/account_admin.php b/scripts/user/account_admin.php
index 4e4500a2f..d5aa5f76e 100755
--- a/scripts/user/account_admin.php
+++ b/scripts/user/account_admin.php
@@ -112,6 +112,18 @@ if ($is_new) {
$create_email = $email;
}
+$changed_pass = false;
+// This disables local echo, so the user's password is not shown as they type
+// it.
+phutil_passthru('stty -echo');
+$password = phutil_console_prompt(
+ pht('Enter a password for this user [blank to leave unchanged]:'));
+phutil_passthru('stty echo');
+if (strlen($password)) {
+ $changed_pass = $password;
+}
+
+
$is_system_agent = $user->getIsSystemAgent();
$set_system_agent = phutil_console_confirm(
pht('Is this user a bot?'),
@@ -148,6 +160,11 @@ if ($is_new) {
printf($tpl, pht('Email'), '', $create_email);
}
+printf($tpl, pht('Password'), null,
+ ($changed_pass !== false)
+ ? pht('Updated')
+ : pht('Unchanged'));
+
printf(
$tpl,
pht('Bot'),
@@ -200,6 +217,17 @@ $user->openTransaction();
$editor->updateUser($user, $verify_email);
}
+ if ($changed_pass !== false) {
+ $password_envelope = new PhutilOpaqueEnvelope($changed_pass);
+
+ $account_type = PhabricatorAuthPassword::PASSWORD_TYPE_ACCOUNT;
+ $password_object = PhabricatorAuthPassword::initializeNewPassword($user, $account_type);
+
+ $password_object
+ ->setPassword($password_envelope, $user)
+ ->save();
+ }
+
$editor->makeSystemAgentUser($user, $set_system_agent);
$xactions = array();
@@ -223,6 +251,7 @@ $user->openTransaction();
$transaction_editor->applyTransactions($user, $xactions);
+
$user->saveTransaction();
echo pht('Saved changes.')."\n";
--
2.20.1