Repository URL to install this package:
|
Version:
6.2.10 ▾
|
<?php
namespace DigitalAscetic\BaseUserBundle\DependencyInjection;
use DigitalAscetic\BaseUserBundle\Security\UserChecker;
use DigitalAscetic\BaseUserBundle\Security\UserProvider;
use DigitalAscetic\BaseUserBundle\Service\ResetPasswordService;
use DigitalAscetic\BaseUserBundle\Service\UserPasswordEncoderService;
use DigitalAscetic\BaseUserBundle\Service\UserService;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\DependencyInjection\Reference;
class DigitalAsceticBaseUserExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$loader = new XmlFileLoader(
$container,
new FileLocator(__DIR__ . '/../../config')
);
$loader->load('services.xml');
$config = $this->processConfiguration(new Configuration(), $configs);
$userClass = $config['user_class'];
$firewallName = $config['firewall_name'];
$userEnabled = $config['user_enabled'];
$retryTTL = $config['retry_reset_password_ttl'];
$container->setParameter('digital_ascetic_base_user.firewall_name', $firewallName);
$passEncoderService = new Definition(UserPasswordEncoderService::class);
$passEncoderService->addArgument(new Reference('security.password_hasher'));
$passEncoderService->addArgument($userClass);
$container->setDefinition(UserPasswordEncoderService::SERVICE_NAME, $passEncoderService);
$container->setAlias(UserPasswordEncoderService::class, UserPasswordEncoderService::SERVICE_NAME);
$userService = new Definition(UserService::class);
$userService->addArgument(new Reference('doctrine.orm.entity_manager'));
$userService->addArgument(new Reference('security.password_hasher'));
$userService->addArgument($userClass);
$userService->addArgument($userEnabled);
$userService->setPublic(false);
$container->setDefinition(UserService::SERVICE_NAME, $userService);
$container->setAlias(UserService::class, UserService::SERVICE_NAME);
$resetService = new Definition(ResetPasswordService::class);
$resetService->addArgument(new Reference('doctrine.orm.entity_manager'));
$resetService->addArgument(new Reference('event_dispatcher'));
$resetService->addArgument(new Reference(UserPasswordEncoderService::SERVICE_NAME));
$resetService->addArgument($userClass);
$resetService->addArgument($retryTTL);
$container->setDefinition(ResetPasswordService::SERVICE_NAME, $resetService);
$container->setAlias(ResetPasswordService::class, ResetPasswordService::SERVICE_NAME);
$userProvider = new Definition(UserProvider::class);
$userProvider->addArgument(new Reference(UserService::SERVICE_NAME));
$container->setDefinition(UserProvider::SERVICE_NAME, $userProvider);
$container->setAlias(UserProvider::class, UserProvider::SERVICE_NAME);
$userChecker = new Definition(UserChecker::class);
$userChecker->addArgument(new Reference('security.user_checker'));
if ($firewallName) {
$userChecker->addTag('security.user_checker.' . $firewallName);
}
$container->setDefinition(UserChecker::SERVICE_NAME, $userChecker);
$container->setAlias(UserChecker::class, UserChecker::SERVICE_NAME);
}
}