|
|
|
@ -26,6 +26,7 @@ namespace OC\Core\Command\User; |
|
|
|
|
use Symfony\Component\Console\Command\Command; |
|
|
|
|
use Symfony\Component\Console\Input\InputInterface; |
|
|
|
|
use Symfony\Component\Console\Input\InputArgument; |
|
|
|
|
use Symfony\Component\Console\Input\InputOption; |
|
|
|
|
use Symfony\Component\Console\Output\OutputInterface; |
|
|
|
|
|
|
|
|
|
class ResetPassword extends Command { |
|
|
|
@ -47,6 +48,12 @@ class ResetPassword extends Command { |
|
|
|
|
InputArgument::REQUIRED, |
|
|
|
|
'Username to reset password' |
|
|
|
|
) |
|
|
|
|
->addOption( |
|
|
|
|
'password-from-env', |
|
|
|
|
null, |
|
|
|
|
InputOption::VALUE_NONE, |
|
|
|
|
'read password from environment variable OC_PASS' |
|
|
|
|
) |
|
|
|
|
; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -60,7 +67,13 @@ class ResetPassword extends Command { |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($input->isInteractive()) { |
|
|
|
|
if ($input->getOption('password-from-env')) { |
|
|
|
|
$password = getenv('OC_PASS'); |
|
|
|
|
if (!$password) { |
|
|
|
|
$output->writeln('<error>--password-from-env given, but OC_PASS is empty!</error>'); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
} elseif ($input->isInteractive()) { |
|
|
|
|
/** @var $dialog \Symfony\Component\Console\Helper\DialogHelper */ |
|
|
|
|
$dialog = $this->getHelperSet()->get('dialog'); |
|
|
|
|
|
|
|
|
@ -84,20 +97,20 @@ class ResetPassword extends Command { |
|
|
|
|
false |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if ($password === $confirm) { |
|
|
|
|
$success = $user->setPassword($password); |
|
|
|
|
if ($success) { |
|
|
|
|
$output->writeln("<info>Successfully reset password for " . $username . "</info>"); |
|
|
|
|
} else { |
|
|
|
|
$output->writeln("<error>Error while resetting password!</error>"); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
if ($password !== $confirm) { |
|
|
|
|
$output->writeln("<error>Passwords did not match!</error>"); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$output->writeln("<error>Interactive input is needed for entering a new password!</error>"); |
|
|
|
|
$output->writeln("<error>Interactive input or --password-from-env is needed for entering a new password!</error>"); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$success = $user->setPassword($password); |
|
|
|
|
if ($success) { |
|
|
|
|
$output->writeln("<info>Successfully reset password for " . $username . "</info>"); |
|
|
|
|
} else { |
|
|
|
|
$output->writeln("<error>Error while resetting password!</error>"); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|