53 lines
1.8 KiB
PHP
53 lines
1.8 KiB
PHP
<?php namespace RVR\Cli;
|
|
|
|
use DateTime;
|
|
use RVR\PersistentData\Model\OAuthClient;
|
|
use Symfony\Component\Console\Command\Command;
|
|
use Symfony\Component\Console\Input\InputArgument;
|
|
use Symfony\Component\Console\Input\InputInterface;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
|
|
class AddOAuthClientCommand extends Command
|
|
{
|
|
public function configure(): void
|
|
{
|
|
$this->setName('oauth:add-client')
|
|
->setDescription('Adding of OAuth client.')
|
|
->addArgument('client-id', InputArgument::OPTIONAL, 'Client ID')
|
|
->addArgument('preapproved', InputArgument::OPTIONAL, 'Preapproved');
|
|
}
|
|
|
|
public function execute(InputInterface $input, OutputInterface $output): int
|
|
{
|
|
$clientId = $input->getArgument('client-id') ? $input->getArgument('client-id') : bin2hex(random_bytes(8));
|
|
$clientSecret = bin2hex(random_bytes(20));
|
|
|
|
$oAuthClient = new OAuthClient();
|
|
$oAuthClient->setClientId($clientId);
|
|
$oAuthClient->setClientSecret($clientSecret);
|
|
$oAuthClient->setCreatedDate(new DateTime());
|
|
|
|
if ($input->getArgument('preapproved')) {
|
|
$oAuthClient->setPreapproved($input->getArgument('preapproved'));
|
|
}
|
|
|
|
try {
|
|
\Container::$persistentDataManager->saveToDb($oAuthClient);
|
|
} catch (\Exception $e) {
|
|
$output->writeln('<error>Adding OAuth client failed!</error>');
|
|
$output->writeln('');
|
|
|
|
$output->writeln((string) $e);
|
|
$output->writeln('');
|
|
|
|
return 1;
|
|
}
|
|
|
|
$output->writeln('<info>OAuth client was successfully added!</info>');
|
|
$output->writeln('<info>Client ID: ' . $clientId . '</info>');
|
|
$output->writeln('<info>Client secret: ' . $clientSecret . '</info>');
|
|
|
|
return 0;
|
|
}
|
|
}
|