Skip to content

Commit 699c99c

Browse files
committed
bug #58 Fix authenticator registration with multiple user providers (chalasr)
This PR was merged into the 0.1-dev branch. Discussion ---------- Fix authenticator registration with multiple user providers Fixes #41 Commits ------- 92eec1c Fix authenticator registration with multiple user providers
2 parents d9e7d7f + 92eec1c commit 699c99c

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

src/DependencyInjection/Security/OAuth2Factory.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
1111
use Symfony\Component\DependencyInjection\ChildDefinition;
1212
use Symfony\Component\DependencyInjection\ContainerBuilder;
13+
use Symfony\Component\DependencyInjection\Reference;
1314

1415
/**
1516
* @author Mathias Arlaud <mathias.arlaud@gmail.com>
@@ -21,10 +22,14 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
2122
throw new \LogicException('OAuth2 is not supported when "security.enable_authenticator_manager" is not set to true.');
2223
}
2324

24-
public function createAuthenticator(ContainerBuilder $container, string $firewallName, array $config, string $userProvider): string
25+
public function createAuthenticator(ContainerBuilder $container, string $firewallName, array $config, string $userProviderId): string
2526
{
2627
$authenticator = sprintf('security.authenticator.oauth2.%s', $firewallName);
27-
$container->setDefinition($authenticator, new ChildDefinition(OAuth2Authenticator::class));
28+
29+
$definition = new ChildDefinition(OAuth2Authenticator::class);
30+
$definition->replaceArgument(2, new Reference($userProviderId));
31+
32+
$container->setDefinition($authenticator, $definition);
2833

2934
return $authenticator;
3035
}

src/Resources/config/services.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
declare(strict_types=1);
44

5+
use function Symfony\Component\DependencyInjection\Loader\Configurator\abstract_arg;
56
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
67
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
78
use function Symfony\Component\DependencyInjection\Loader\Configurator\tagged_iterator;
@@ -55,7 +56,6 @@
5556
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
5657
use Symfony\Component\HttpFoundation\RequestStack;
5758
use Symfony\Component\Security\Core\Security;
58-
use Symfony\Component\Security\Core\User\UserProviderInterface;
5959

6060
return static function (ContainerConfigurator $container): void {
6161
$container->services()
@@ -118,8 +118,8 @@
118118
->args([
119119
service('league.oauth2_server.factory.psr_http'),
120120
service(ResourceServer::class),
121-
service(UserProviderInterface::class),
122-
null,
121+
abstract_arg('User Provider'),
122+
abstract_arg('Role prefix'),
123123
])
124124
->alias(OAuth2Authenticator::class, 'league.oauth2_server.authenticator.oauth2')
125125

tests/TestKernel.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ public function registerContainerConfiguration(LoaderInterface $loader)
108108
'enable_authenticator_manager' => true,
109109
'firewalls' => [
110110
'test' => [
111+
'provider' => 'in_memory',
111112
'pattern' => '^/security-test',
112113
'stateless' => true,
113114
'oauth2' => true,
@@ -123,6 +124,15 @@ public function registerContainerConfiguration(LoaderInterface $loader)
123124
],
124125
],
125126
],
127+
'another_provider' => [
128+
'memory' => [
129+
'users' => [
130+
FixtureFactory::FIXTURE_USER => [
131+
'roles' => ['ROLE_USER'],
132+
],
133+
],
134+
],
135+
],
126136
],
127137
]);
128138

0 commit comments

Comments
 (0)