]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Console/NewPassword.php
Add missing L10n::popLang calls
[friendica.git] / src / Core / Console / NewPassword.php
index 49cf2e984ed23bf4b4e26d8fb9a93a91e5f2797a..54d10af2077768edf4735a787efd3175ab6b9ef9 100644 (file)
@@ -2,12 +2,11 @@
 
 namespace Friendica\Core\Console;
 
+use Friendica\Core\Config;
 use Friendica\Core\L10n;
-use Friendica\Model\Contact;
+use Friendica\Database\DBA;
 use Friendica\Model\User;
-use Friendica\Core\Config;
-use Friendica\Database\DBM;
-use dba;
+use RuntimeException;
 
 /**
  * @brief tool to set a new password for a user
@@ -27,7 +26,7 @@ class NewPassword extends \Asika\SimpleConsole\Console
                $help = <<<HELP
 console newpassword - Creates a new password for a given user
 Usage
-       bin/console newpassword <nickname> <password> [-h|--help|-?] [-v]
+       bin/console newpassword <nickname> [<password>] [-h|--help|-?] [-v]
 
 Description
        Creates a new password for a user without using the "forgot password" functionality.
@@ -58,28 +57,33 @@ HELP;
                        throw new \Asika\SimpleConsole\CommandArgsException('Too many arguments');
                }
 
-               require_once 'config/.htconfig.php';
-               $result = \dba::connect($db_host, $db_user, $db_pass, $db_data);
-               unset($db_host, $db_user, $db_pass, $db_data);
-
-               if (!$result) {
-                       throw new \RuntimeException('Unable to connect to database');
+               if ($a->getMode()->isInstall()) {
+                       throw new RuntimeException('Database isn\'t ready or populated yet');
                }
 
                $nick = $this->getArgument(0);
+
+               $user = DBA::selectFirst('user', ['uid'], ['nickname' => $nick]);
+               if (!DBA::isResult($user)) {
+                       throw new RuntimeException(L10n::t('User not found'));
+               }
+
                $password = $this->getArgument(1);
+               if (is_null($password)) {
+                       $this->out(L10n::t('Enter new password: '), false);
+                       $password = \Seld\CliPrompt\CliPrompt::hiddenPrompt(true);
+               }
 
-               $user = dba::selectFirst('user', ['uid'], ['nickname' => $nick]);
-               if (!DBM::is_result($user)) {
-                       throw new \RuntimeException(L10n::t('User not found'));
+               if (!$password) {
+                       throw new RuntimeException(L10n::t('Password can\'t be empty'));
                }
 
                if (!Config::get('system', 'disable_password_exposed', false) && User::isPasswordExposed($password)) {
-                       throw new \RuntimeException(L10n::t('The new password has been exposed in a public data dump, please choose another.'));
+                       throw new RuntimeException(L10n::t('The new password has been exposed in a public data dump, please choose another.'));
                }
 
                if (!User::updatePassword($user['uid'], $password)) {
-                       throw new \RuntimeException(L10n::t('Password update failed. Please try again.'));
+                       throw new RuntimeException(L10n::t('Password update failed. Please try again.'));
                }
 
                $this->out(L10n::t('Password changed.'));