92 lines
2.9 KiB
PHP
92 lines
2.9 KiB
PHP
<?php
|
|
namespace Grav\Plugin\Console;
|
|
|
|
use Grav\Console\ConsoleCommand;
|
|
use Grav\Plugin\GitSync\GitSync;
|
|
use Grav\Plugin\GitSync\Helper;
|
|
use Grav\Common\Grav;
|
|
use RocketTheme\Toolbox\File\YamlFile;
|
|
use Symfony\Component\Console\Exception\RuntimeException;
|
|
use Symfony\Component\Console\Input\InputOption;
|
|
|
|
/**
|
|
* Class LogCommand
|
|
*
|
|
* @package Grav\Plugin\Console
|
|
*/
|
|
class PasswdCommand extends ConsoleCommand
|
|
{
|
|
/** @var array */
|
|
protected $options = [];
|
|
|
|
protected function configure()
|
|
{
|
|
$this
|
|
->setName('passwd')
|
|
->setDescription('Allows to change the user and/or password programmatically')
|
|
->addOption(
|
|
'user',
|
|
'u',
|
|
InputOption::VALUE_REQUIRED,
|
|
'The username. Use empty double quotes if you need an empty username.'
|
|
)
|
|
->addOption(
|
|
'password',
|
|
'p',
|
|
InputOption::VALUE_REQUIRED,
|
|
"The password."
|
|
)
|
|
->setHelp('The <info>%command.name%</info> command allows to change the user and/or password. Useful when running automated scripts or needing to programmatically set them without admin access.')
|
|
;
|
|
}
|
|
|
|
protected function serve()
|
|
{
|
|
require_once __DIR__ . '/../vendor/autoload.php';
|
|
$grav = Grav::instance();
|
|
$config = $grav['config'];
|
|
$locator = $grav['locator'];
|
|
$filename = 'config://plugins/git-sync.yaml';
|
|
$file = YamlFile::instance($locator->findResource($filename, true, true));
|
|
|
|
$this->options = [
|
|
'user' => $this->input->getOption('user'),
|
|
'password' => $this->input->getOption('password')
|
|
];
|
|
|
|
if ($this->options['password'] !== null) {
|
|
$this->options['password'] = Helper::encrypt($this->options['password']);
|
|
}
|
|
|
|
$user = $this->options['user'] !== null ? $this->options['user'] : $config->get('plugins.git-sync.user');
|
|
$password = $this->options['password'] !== null ? $this->options['password'] : $config->get('plugins.git-sync.password');
|
|
|
|
$config->set('plugins.git-sync.user', $user);
|
|
$config->set('plugins.git-sync.password', $password);
|
|
|
|
$content = $grav['config']->get('plugins.git-sync');
|
|
$file->save($content);
|
|
$file->free();
|
|
|
|
$this->output->writeln('');
|
|
$this->output->writeln('<green>User / Password updated.</green>');
|
|
$this->output->writeln('');
|
|
}
|
|
|
|
private function console_header($readable, $cmd = '', $remote_action = false)
|
|
{
|
|
$this->output->writeln(
|
|
"<yellow>$readable</yellow>" . ($cmd ? "(<info>$cmd</info>)" : ''). ($remote_action ? '...' : '')
|
|
);
|
|
}
|
|
|
|
private function console_log($lines, $password)
|
|
{
|
|
foreach ($lines as $line) {
|
|
$this->output->writeln(' ' . Helper::preventReadablePassword($line, $password));
|
|
}
|
|
}
|
|
|
|
|
|
}
|