* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\UserProvider; use Symfony\Component\Config\Definition\Builder\NodeDefinition; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\DefinitionDecorator; /** * InMemoryFactory creates services for the memory provider. * * @author Fabien Potencier * @author Christophe Coevoet */ class InMemoryFactory implements UserProviderFactoryInterface { public function create(ContainerBuilder $container, $id, $config) { $definition = $container->setDefinition($id, new DefinitionDecorator('security.user.provider.in_memory')); $users = array(); foreach ($config['users'] as $username => $user) { $users[$username] = array('password' => (string) $user['password'], 'roles' => $user['roles']); } $definition->addArgument($users); } public function getKey() { return 'memory'; } public function addConfiguration(NodeDefinition $node) { $node ->fixXmlConfig('user') ->children() ->arrayNode('users') ->useAttributeAsKey('name') ->prototype('array') ->children() ->scalarNode('password')->defaultValue(uniqid('', true))->end() ->arrayNode('roles') ->beforeNormalization()->ifString()->then(function ($v) { return preg_split('/\s*,\s*/', $v); })->end() ->prototype('scalar')->end() ->end() ->end() ->end() ->end() ->end() ; } }