finish admin update password command line

This commit is contained in:
Manuel Raynaud
2013-10-30 15:33:25 +01:00
parent b0f3ad69d2
commit e18c8992f8
5 changed files with 57 additions and 17 deletions

View File

@@ -22,8 +22,15 @@
/*************************************************************************************/
namespace Thelia\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Thelia\Core\Event\Administrator\AdministratorUpdatePasswordEvent;
use Thelia\Core\Event\TheliaEvents;
use Thelia\Model\AdminQuery;
use Thelia\Tools\Password;
/**
@@ -31,11 +38,11 @@ use Symfony\Component\Console\Input\InputOption;
*
* php Thelia admin:updatePassword
*
* Class AdminUpdatePassword
* Class AdminUpdatePasswordCommand
* @package Thelia\Command
* @author Manuel Raynaud <mraynaud@openstudio.fr>
*/
class AdminUpdatePassword extends ContainerAwareCommand
class AdminUpdatePasswordCommand extends ContainerAwareCommand
{
/**
@@ -60,4 +67,34 @@ class AdminUpdatePassword extends ContainerAwareCommand
)
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$login = $input->getArgument('login');
if (null === $admin = AdminQuery::create()->filterByLogin($login)->findOne()) {
throw new \RuntimeException(sprintf('Admin with login %s does not exists', $login));
}
$password = $input->getOption('password') ?: Password::generateRandom();
$event = new AdministratorUpdatePasswordEvent($admin);
$event->setPassword($password);
$this->
getContainer()
->get('event_dispatcher')
->dispatch(TheliaEvents::ADMINISTRATOR_UPDATEPASSWORD, $event);
$output->writeln(array(
'',
sprintf('<info>admin %s password updated</info>', $login),
sprintf('<info>new password is : %s</info>', $password),
''
));
}
}