]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Console/NewPassword.php
Merge pull request #7068 from MrPetovan/task/7047-theme-error-page
[friendica.git] / src / Core / Console / NewPassword.php
index 51d345dcf1698241be0548ccf9cdef3e5561b17d..3cd96ad322bd5107be58c830b56b8d080000698c 100644 (file)
@@ -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
@@ -41,7 +39,7 @@ HELP;
 
        protected function doExecute()
        {
-               $a = get_app();
+               $a = \get_app();
 
                if ($this->getOption('v')) {
                        $this->out('Class: ' . __CLASS__);
@@ -58,19 +56,15 @@ 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 (!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'));
                }
 
                $password = $this->getArgument(1);
@@ -79,20 +73,18 @@ HELP;
                        $password = \Seld\CliPrompt\CliPrompt::hiddenPrompt(true);
                }
 
-               if (!$password) {
-                       throw new \RuntimeException(L10n::t('Password can\'t be empty'));
-               }
+               try {
+                       $result = User::updatePassword($user['uid'], $password);
 
-               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.'));
-               }
+                       if (!DBA::isResult($result)) {
+                               throw new \Exception(L10n::t('Password update failed. Please try again.'));
+                       }
 
-               if (!User::updatePassword($user['uid'], $password)) {
-                       throw new \RuntimeException(L10n::t('Password update failed. Please try again.'));
+                       $this->out(L10n::t('Password changed.'));
+               } catch (\Exception $e) {
+                       throw new RuntimeException($e->getMessage(), $e->getCode(), $e);
                }
 
-               $this->out(L10n::t('Password changed.'));
-
                return 0;
        }
 }