@ -34,14 +34,19 @@ use vierbergenlars\AuthserverOAuthAccountBundle\ResourceOwner\ResourceOwnerConfi
class AuthserverOAuthAccountExtension extends Extension implements PrependExtensionInterface
class AuthserverOAuthAccountExtension extends Extension implements PrependExtensionInterface
{
{
const USER_PROVIDER_SERVICE = 'vierbergenlars.authserver_oauth_account.user_provider';
const USER_PROVIDER_SERVICE = 'vierbergenlars.authserver_oauth_account.user_provider';
const RESOURCE_OWNER_MAP_SERVICE = 'vierbergenlars.authserver_oauth_account.resource_owner_map';
public function prepend(ContainerBuilder $container)
public function prepend(ContainerBuilder $container)
{
{
$container->prependExtensionConfig('hwi_oauth', [
$container->prependExtensionConfig('hwi_oauth', [
'firewall_names' => ['public'],
'firewall_names' => [
'public'
],
'connect' => [
'connect' => [
'account_connector' => self::USER_PROVIDER_SERVICE,
'account_connector' => self::USER_PROVIDER_SERVICE
]
]
]);
]);
@ -52,7 +57,7 @@ class AuthserverOAuthAccountExtension extends Extension implements PrependExtens
$container->prependExtensionConfig('hwi_oauth', [
$container->prependExtensionConfig('hwi_oauth', [
'resource_owners' => array_map(function ($resource_owner) {
'resource_owners' => array_map(function ($resource_owner) {
return $resource_owner['config'];
return $resource_owner['config'];
}, $config['resource_owners']),
}, $config['resource_owners'])
]);
]);
$container->loadFromExtension('security', [
$container->loadFromExtension('security', [
@ -65,11 +70,11 @@ class AuthserverOAuthAccountExtension extends Extension implements PrependExtens
'login_path' => 'app_login',
'login_path' => 'app_login',
'failure_path' => 'app_login',
'failure_path' => 'app_login',
'oauth_user_provider' => [
'oauth_user_provider' => [
'service' => self::USER_PROVIDER_SERVICE,
'service' => self::USER_PROVIDER_SERVICE
],
]
],
]
]
]
]
],
]);
]);
}
}
@ -82,12 +87,11 @@ class AuthserverOAuthAccountExtension extends Extension implements PrependExtens
$processor = new Processor();
$processor = new Processor();
$config = $processor->processConfiguration(new Configuration(), $configs);
$config = $processor->processConfiguration(new Configuration(), $configs);
$container->getDefinition(self::RESOURCE_OWNER_MAP_SERVICE)->setArgument(0, $config['resource_owners']);
foreach($config['resource_owners'] as $name => $config)
foreach ($config['resource_owners'] as $name => $config) {
{
$service = new DefinitionDecorator('vierbergenlars.authserver_oauth_account.external_account_provider.abstract');
$service = new DefinitionDecorator('vierbergenlars.authserver_oauth_account.external_account_provider.abstract');
$service->replaceArgument(0, $name);
$service->replaceArgument(0, $name);
$service->replaceArgument(1, $config);
$service->addTag(AuthserverExternalAccountBundle::EXTERNAL_ACCOUNT_PROVIDER_TAG);
$service->addTag(AuthserverExternalAccountBundle::EXTERNAL_ACCOUNT_PROVIDER_TAG);
$container->setDefinition('vierbergenlars.authserver_oauth_account.external_account_provider.impl.' . $name, $service);
$container->setDefinition('vierbergenlars.authserver_oauth_account.external_account_provider.impl.' . $name, $service);
}
}