OAuthClientCreateCommand.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace Base\OAuthServerBundle\Command;
  3. use \Base\OAuthServerBundle\Entity\OAuthClient;
  4. use \FOS\OAuthServerBundle\Entity\ClientManager;
  5. use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
  6. use Symfony\Component\Console\Input\InputInterface;
  7. use Symfony\Component\Console\Output\OutputInterface;
  8. use Symfony\Component\Console\Input\InputOption;
  9. class OAuthClientCreateCommand extends ContainerAwareCommand
  10. {
  11. protected function configure()
  12. {
  13. $this
  14. ->setName('oauth:client:create')
  15. ->setDescription('Create OAuht client')
  16. ->setHelp('This command allows you to create an OAuth client')
  17. ->addOption(
  18. 'redirect_uri',
  19. null,
  20. InputOption::VALUE_REQUIRED,
  21. 'OAuth Redirect URI',
  22. 'http://127.0.0.1/ftth/app_dev.php/login_check'
  23. )
  24. ->addOption(
  25. 'client_id',
  26. null,
  27. InputOption::VALUE_OPTIONAL,
  28. 'OAuth Client random Id'
  29. )
  30. ->addOption(
  31. 'client_secret',
  32. null,
  33. InputOption::VALUE_OPTIONAL,
  34. 'OAuth Client random Secret'
  35. );
  36. }
  37. /**
  38. * @param InputInterface $input
  39. * @param OutputInterface $output
  40. */
  41. protected function execute(InputInterface $input, OutputInterface $output)
  42. {
  43. $redirectUri = $input->getOption('redirect_uri');
  44. $random = $input->getOption('client_id');
  45. $secret = $input->getOption('client_secret');
  46. $client = $this->createClient($redirectUri, $random, $secret);
  47. $output->writeln('#OAuth client successfully generated!');
  48. $output->writeln('client_id='.$client->getPublicId());
  49. $output->writeln('client_secret='.$client->getSecret());
  50. }
  51. /**
  52. * @param string $redirectUri
  53. * @param string $random
  54. * @param string $secret
  55. *
  56. * @return OAuthClient
  57. */
  58. protected function createClient($redirectUri, $random = null, $secret = null)
  59. {
  60. /* @var $clientManager ClientManager */
  61. $clientManager = $this->getContainer()->get('fos_oauth_server.client_manager.default');
  62. /* @var $client OAuthClient */
  63. $client = $clientManager->createClient();
  64. if ($random) {
  65. $client->setRandomId($random);
  66. }
  67. if ($secret) {
  68. $client->setSecret($secret);
  69. }
  70. $client->setRedirectUris(array(
  71. $redirectUri,
  72. ));
  73. $client->setAllowedGrantTypes(array_keys(OAuthClient::getGrantTypesChoices()));
  74. $clientManager->updateClient($client);
  75. return $client;
  76. }
  77. }