- <?php
- /*
-  * This file is part of the HWIOAuthBundle package.
-  *
-  * (c) Hardware Info <opensource@hardware.info>
-  *
-  * For the full copyright and license information, please view the LICENSE
-  * file that was distributed with this source code.
-  */
- namespace HWI\Bundle\OAuthBundle;
- use HWI\Bundle\OAuthBundle\DependencyInjection\CompilerPass\EnableRefreshOAuthTokenListenerCompilerPass;
- use HWI\Bundle\OAuthBundle\DependencyInjection\CompilerPass\ResourceOwnerCompilerPass;
- use HWI\Bundle\OAuthBundle\DependencyInjection\Security\Factory\OAuthAuthenticatorFactory;
- use Symfony\Bundle\SecurityBundle\DependencyInjection\SecurityExtension;
- use Symfony\Component\DependencyInjection\ContainerBuilder;
- use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
- use Symfony\Component\HttpKernel\Bundle\Bundle;
- /**
-  * @author Geoffrey Bachelet <geoffrey.bachelet@gmail.com>
-  * @author Alexander <geoffrey.bachelet@gmail.com>
-  */
- class HWIOAuthBundle extends Bundle
- {
-     /**
-      * {@inheritdoc}
-      */
-     public function build(ContainerBuilder $container): void
-     {
-         parent::build($container);
-         /** @var SecurityExtension $extension */
-         $extension = $container->getExtension('security');
-         $firewallNames = $this->extension->getFirewallNames();
-         if (method_exists($extension, 'addAuthenticatorFactory')) {
-             $extension->addAuthenticatorFactory(new OAuthAuthenticatorFactory($firewallNames));
-         } elseif (method_exists($extension, 'addSecurityListenerFactory')) {
-             // Symfony < 5.4 BC layer
-             $extension->addSecurityListenerFactory(new OAuthAuthenticatorFactory($firewallNames));
-         } else {
-             throw new \RuntimeException('Unsupported Symfony Security component version');
-         }
-         $container->addCompilerPass(new ResourceOwnerCompilerPass());
-         $container->addCompilerPass(new EnableRefreshOAuthTokenListenerCompilerPass());
-     }
-     /**
-      * {@inheritdoc}
-      */
-     public function getContainerExtension(): ?ExtensionInterface
-     {
-         // return the right extension instead of "auto-registering" it. Now the
-         // alias can be hwi_oauth instead of hwi_o_auth.
-         return $this->extension ?: $this->extension = $this->createContainerExtension();
-     }
- }
-