vendor/web-token/jwt-framework/src/Bundle/JoseFrameworkBundle.php line 24

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Jose\Bundle\JoseFramework;
  4. use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\EventDispatcherAliasCompilerPass;
  5. use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\SymfonySerializerCompilerPass;
  6. use Jose\Bundle\JoseFramework\DependencyInjection\JoseFrameworkExtension;
  7. use Jose\Bundle\JoseFramework\DependencyInjection\Source;
  8. use Jose\Bundle\JoseFramework\DependencyInjection\Source\Checker\CheckerSource;
  9. use Jose\Bundle\JoseFramework\DependencyInjection\Source\Console\ConsoleSource;
  10. use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
  11. use Jose\Bundle\JoseFramework\DependencyInjection\Source\Encryption\EncryptionSource;
  12. use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\KeyManagementSource;
  13. use Jose\Bundle\JoseFramework\DependencyInjection\Source\NestedToken\NestedToken;
  14. use Jose\Bundle\JoseFramework\DependencyInjection\Source\Signature\SignatureSource;
  15. use Jose\Bundle\JoseFramework\DependencyInjection\Source\SourceWithCompilerPasses;
  16. use Symfony\Component\DependencyInjection\Compiler\PassConfig;
  17. use Symfony\Component\DependencyInjection\ContainerBuilder;
  18. use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
  19. use Symfony\Component\HttpKernel\Bundle\Bundle;
  20. final class JoseFrameworkBundle extends Bundle
  21. {
  22. /**
  23. * @var Source\Source[]
  24. */
  25. private array $sources = [];
  26. public function __construct()
  27. {
  28. foreach ($this->getSources() as $source) {
  29. $this->sources[$source->name()] = $source;
  30. }
  31. }
  32. public function getContainerExtension(): ExtensionInterface
  33. {
  34. return new JoseFrameworkExtension('jose', $this->sources);
  35. }
  36. public function build(ContainerBuilder $container): void
  37. {
  38. parent::build($container);
  39. foreach ($this->sources as $source) {
  40. if ($source instanceof SourceWithCompilerPasses) {
  41. $compilerPasses = $source->getCompilerPasses();
  42. foreach ($compilerPasses as $compilerPass) {
  43. $container->addCompilerPass($compilerPass, PassConfig::TYPE_BEFORE_OPTIMIZATION, 0);
  44. }
  45. }
  46. }
  47. $container->addCompilerPass(new EventDispatcherAliasCompilerPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, 0);
  48. $container->addCompilerPass(new SymfonySerializerCompilerPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, 10);
  49. }
  50. /**
  51. * @return Source\Source[]
  52. */
  53. private function getSources(): iterable
  54. {
  55. return [
  56. new CoreSource(),
  57. new CheckerSource(),
  58. new ConsoleSource(),
  59. new SignatureSource(),
  60. new EncryptionSource(),
  61. new NestedToken(),
  62. new KeyManagementSource(),
  63. ];
  64. }
  65. }