vendor/friendsofsymfony/oauth-server-bundle/DependencyInjection/Compiler/GrantExtensionsCompilerPass.php line 30

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of the FOSOAuthServerBundle package.
  5.  *
  6.  * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
  7.  *
  8.  * For the full copyright and license information, please view the LICENSE
  9.  * file that was distributed with this source code.
  10.  */
  11. namespace FOS\OAuthServerBundle\DependencyInjection\Compiler;
  12. use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
  13. use Symfony\Component\DependencyInjection\ContainerBuilder;
  14. use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
  15. use Symfony\Component\DependencyInjection\Reference;
  16. /**
  17.  * @author Adrien Brault <adrien.brault@gmail.com>
  18.  */
  19. class GrantExtensionsCompilerPass implements CompilerPassInterface
  20. {
  21.     public function process(ContainerBuilder $container)
  22.     {
  23.         $storageDefinition $container->findDefinition('fos_oauth_server.storage');
  24.         $className $container->getParameterBag()->resolveValue($storageDefinition->getClass());
  25.         $storageClass = new \ReflectionClass($className);
  26.         if (!$storageClass->implementsInterface('FOS\OAuthServerBundle\Storage\GrantExtensionDispatcherInterface')) {
  27.             return;
  28.         }
  29.         foreach ($container->findTaggedServiceIds('fos_oauth_server.grant_extension') as $id => $tags) {
  30.             foreach ($tags as $tag) {
  31.                 if (empty($tag['uri'])) {
  32.                     throw new InvalidArgumentException(sprintf('Service "%s" must define the "uri" attribute on "fos_oauth_server.grant_extension" tags.'$id));
  33.                 }
  34.                 $storageDefinition->addMethodCall('setGrantExtension', [$tag['uri'], new Reference($id)]);
  35.             }
  36.         }
  37.     }
  38. }