X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FConsole%2FNewPassword.php;h=3cd96ad322bd5107be58c830b56b8d080000698c;hb=3aa77685fcccff9739384136b4894de43200fa8c;hp=49cf2e984ed23bf4b4e26d8fb9a93a91e5f2797a;hpb=346697d771e2656b4bcd12a5e84045710e9b2b55;p=friendica.git diff --git a/src/Core/Console/NewPassword.php b/src/Core/Console/NewPassword.php index 49cf2e984e..3cd96ad322 100644 --- a/src/Core/Console/NewPassword.php +++ b/src/Core/Console/NewPassword.php @@ -3,11 +3,9 @@ namespace Friendica\Core\Console; 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 +25,7 @@ class NewPassword extends \Asika\SimpleConsole\Console $help = << [-h|--help|-?] [-v] + bin/console newpassword [] [-h|--help|-?] [-v] Description Creates a new password for a user without using the "forgot password" functionality. @@ -41,7 +39,7 @@ HELP; protected function doExecute() { - $a = get_app(); + $a = \get_app(); if ($this->getOption('v')) { $this->out('Class: ' . __CLASS__); @@ -58,31 +56,34 @@ 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); - $password = $this->getArgument(1); - $user = dba::selectFirst('user', ['uid'], ['nickname' => $nick]); - if (!DBM::is_result($user)) { - throw new \RuntimeException(L10n::t('User not found')); + $user = DBA::selectFirst('user', ['uid'], ['nickname' => $nick]); + if (!DBA::isResult($user)) { + throw new RuntimeException(L10n::t('User not found')); } - 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.')); + $password = $this->getArgument(1); + if (is_null($password)) { + $this->out(L10n::t('Enter new password: '), false); + $password = \Seld\CliPrompt\CliPrompt::hiddenPrompt(true); } - if (!User::updatePassword($user['uid'], $password)) { - throw new \RuntimeException(L10n::t('Password update failed. Please try again.')); - } + try { + $result = User::updatePassword($user['uid'], $password); + + if (!DBA::isResult($result)) { + throw new \Exception(L10n::t('Password update failed. Please try again.')); + } - $this->out(L10n::t('Password changed.')); + $this->out(L10n::t('Password changed.')); + } catch (\Exception $e) { + throw new RuntimeException($e->getMessage(), $e->getCode(), $e); + } return 0; }