Merge pull request #8554 from owncloud/add_resetadminpass_command
Add a resetadminpass command to console * owncloud/add_resetadminpass_command: Move resetpassword into user: command space. Document type of user project. Receive \OC\User\Manager as a constructor dependency. Use userManager, color output, return 1 on error Add doc, check return-value, fix spacing, require interactive Back to the future Make ResetAdminPass to ResetPassword Add a resetadminpass command to console - fix #8248remotes/origin/ldap_group_count
commit
9fba8221a6
@ -0,0 +1,79 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2014 Christopher Schäpers <christopher@schaepers.it> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
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\Output\OutputInterface; |
||||
|
||||
class ResetPassword extends Command { |
||||
|
||||
/** @var \OC\User\Manager */ |
||||
protected $userManager; |
||||
|
||||
public function __construct(\OC\User\Manager $userManager) { |
||||
$this->userManager = $userManager; |
||||
parent::__construct(); |
||||
} |
||||
|
||||
protected function configure() { |
||||
$this |
||||
->setName('user:resetpassword') |
||||
->setDescription('Resets the password of the named user') |
||||
->addArgument( |
||||
'user', |
||||
InputArgument::REQUIRED, |
||||
'Username to reset password' |
||||
) |
||||
; |
||||
} |
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output) { |
||||
$username = $input->getArgument('user'); |
||||
|
||||
/** @var $user \OC\User\User */ |
||||
$user = $this->userManager->get($username); |
||||
if (is_null($user)) { |
||||
$output->writeln("<error>There is no user called " . $username . "</error>"); |
||||
return 1; |
||||
} |
||||
|
||||
if ($input->isInteractive()) { |
||||
/** @var $dialog \Symfony\Component\Console\Helper\DialogHelper */ |
||||
$dialog = $this->getHelperSet()->get('dialog'); |
||||
$password = $dialog->askHiddenResponse( |
||||
$output, |
||||
'<question>Enter a new password: </question>', |
||||
false |
||||
); |
||||
$confirm = $dialog->askHiddenResponse( |
||||
$output, |
||||
'<question>Confirm the new password: </question>', |
||||
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 { |
||||
$output->writeln("<error>Passwords did not match!</error>"); |
||||
return 1; |
||||
} |
||||
} else { |
||||
$output->writeln("<error>Interactive input is needed for entering a new password!</error>"); |
||||
return 1; |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue