]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Console/NewPassword.php
Merge pull request #5394 from MrPetovan/bug/fix-config-set-return-value
[friendica.git] / src / Core / Console / NewPassword.php
index 49cf2e984ed23bf4b4e26d8fb9a93a91e5f2797a..003597472716c990e1fab7560623ddbf39060e74 100644 (file)
@@ -27,7 +27,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,22 +58,27 @@ 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->isInstallMode()) {
+                       throw new \RuntimeException('Database isn\'t ready or populated yet');
                }
 
                $nick = $this->getArgument(0);
-               $password = $this->getArgument(1);
 
                $user = dba::selectFirst('user', ['uid'], ['nickname' => $nick]);
                if (!DBM::is_result($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);
+               }
+
+               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.'));
                }