Skip to content

Commit bc50aa0

Browse files
author
j.schmitt
committed
[FrameworkBundle] Move security-csrf configuration to PHP
1 parent 8692d14 commit bc50aa0

File tree

3 files changed

+55
-37
lines changed

3 files changed

+55
-37
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ public function load(array $configs, ContainerBuilder $container)
288288
if (null === $config['csrf_protection']['enabled']) {
289289
$config['csrf_protection']['enabled'] = $this->sessionConfigEnabled && !class_exists(FullStack::class) && interface_exists(CsrfTokenManagerInterface::class);
290290
}
291-
$this->registerSecurityCsrfConfiguration($config['csrf_protection'], $container, $loader);
291+
$this->registerSecurityCsrfConfiguration($config['csrf_protection'], $container, $phpLoader);
292292

293293
if ($this->isConfigEnabled($container, $config['form'])) {
294294
if (!class_exists('Symfony\Component\Form\Form')) {
@@ -1439,7 +1439,7 @@ private function registerSecretsConfiguration(array $config, ContainerBuilder $c
14391439
}
14401440
}
14411441

1442-
private function registerSecurityCsrfConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
1442+
private function registerSecurityCsrfConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $phpLoader)
14431443
{
14441444
if (!$this->isConfigEnabled($container, $config)) {
14451445
return;
@@ -1454,7 +1454,7 @@ private function registerSecurityCsrfConfiguration(array $config, ContainerBuild
14541454
}
14551455

14561456
// Enable services for CSRF protection (even without forms)
1457-
$loader->load('security_csrf.xml');
1457+
$phpLoader->load('security_csrf.php');
14581458

14591459
if (!class_exists(CsrfExtension::class)) {
14601460
$container->removeDefinition('twig.extension.security_csrf');

Resources/config/security_csrf.php

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.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+
12+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
13+
14+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
15+
use Symfony\Component\Security\Csrf\TokenGenerator\UriSafeTokenGenerator;
16+
use Symfony\Component\Security\Csrf\TokenGenerator\TokenGeneratorInterface;
17+
use Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage;
18+
use Symfony\Component\Security\Csrf\TokenStorage\TokenStorageInterface;
19+
use Symfony\Component\Security\Csrf\CsrfTokenManager;
20+
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
21+
use Symfony\Bridge\Twig\Extension\CsrfRuntime;
22+
use Symfony\Bridge\Twig\Extension\CsrfExtension;
23+
24+
return static function (ContainerConfigurator $container) {
25+
$container->services()
26+
->set('security.csrf.token_generator', UriSafeTokenGenerator::class)
27+
28+
->alias(TokenGeneratorInterface::class, 'security.csrf.token_generator')
29+
30+
->set('security.csrf.token_storage', SessionTokenStorage::class)
31+
->args([service('session')])
32+
33+
->alias(TokenStorageInterface::class, 'security.csrf.token_storage')
34+
35+
->set('security.csrf.token_manager', CsrfTokenManager::class)
36+
->public()
37+
->args([
38+
service('security.csrf.token_generator'),
39+
service('security.csrf.token_storage'),
40+
service('request_stack')->ignoreOnInvalid()
41+
])
42+
43+
->alias(CsrfTokenManagerInterface::class, 'security.csrf.token_manager')
44+
45+
->set('twig.runtime.security_csrf', CsrfRuntime::class)
46+
->args([service('security.csrf.token_manager')])
47+
->tag('twig.runtime')
48+
49+
->set('twig.extension.security_csrf', CsrfExtension::class)
50+
->tag('twig.extension')
51+
;
52+
};

Resources/config/security_csrf.xml

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)