* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace FOS\OAuthServerBundle\Command; use FOS\OAuthServerBundle\Model\ClientManagerInterface; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; class CreateClientCommand extends Command { protected static $defaultName = 'fos:oauth-server:create-client'; private $clientManager; public function __construct(ClientManagerInterface $clientManager) { parent::__construct(); $this->clientManager = $clientManager; } /** * {@inheritdoc} */ protected function configure() { parent::configure(); $this ->setDescription('Creates a new client') ->addOption( 'redirect-uri', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Sets redirect uri for client. Use this option multiple times to set multiple redirect URIs.', null ) ->addOption( 'grant-type', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Sets allowed grant type for client. Use this option multiple times to set multiple grant types..', null ) ->setHelp(<<%command.name% command creates a new client. php %command.full_name% [--redirect-uri=...] [--grant-type=...] EOT ) ; } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $io->title('Client Credentials'); // Create a new client $client = $this->clientManager->createClient(); $client->setRedirectUris($input->getOption('redirect-uri')); $client->setAllowedGrantTypes($input->getOption('grant-type')); // Save the client $this->clientManager->updateClient($client); // Give the credentials back to the user $headers = ['Client ID', 'Client Secret']; $rows = [ [$client->getPublicId(), $client->getSecret()], ]; $io->table($headers, $rows); return 0; } }