From 68994a662e72fe22542dfdea7789ea04910cd4d1 Mon Sep 17 00:00:00 2001 From: Titouan Galopin Date: Thu, 31 May 2018 18:52:49 +0200 Subject: [PATCH] [FrameworkBundle][TwigBridge] Fix BC break from strong dependency on CSRF token storage --- .../Bridge/Twig/Extension/CsrfExtension.php | 16 ++------- .../Bridge/Twig/Extension/CsrfRuntime.php | 33 +++++++++++++++++++ .../Resources/config/security_csrf.xml | 6 +++- 3 files changed, 40 insertions(+), 15 deletions(-) create mode 100644 src/Symfony/Bridge/Twig/Extension/CsrfRuntime.php diff --git a/src/Symfony/Bridge/Twig/Extension/CsrfExtension.php b/src/Symfony/Bridge/Twig/Extension/CsrfExtension.php index 97f3484a2977..2f061acfd3ae 100644 --- a/src/Symfony/Bridge/Twig/Extension/CsrfExtension.php +++ b/src/Symfony/Bridge/Twig/Extension/CsrfExtension.php @@ -11,34 +11,22 @@ namespace Symfony\Bridge\Twig\Extension; -use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; /** * @author Christian Flothmann + * @author Titouan Galopin */ class CsrfExtension extends AbstractExtension { - private $csrfTokenManager; - - public function __construct(CsrfTokenManagerInterface $csrfTokenManager) - { - $this->csrfTokenManager = $csrfTokenManager; - } - /** * {@inheritdoc} */ public function getFunctions(): array { return array( - new TwigFunction('csrf_token', array($this, 'getCsrfToken')), + new TwigFunction('csrf_token', array(CsrfRuntime::class, 'getCsrfToken')), ); } - - public function getCsrfToken(string $tokenId): string - { - return $this->csrfTokenManager->getToken($tokenId)->getValue(); - } } diff --git a/src/Symfony/Bridge/Twig/Extension/CsrfRuntime.php b/src/Symfony/Bridge/Twig/Extension/CsrfRuntime.php new file mode 100644 index 000000000000..1b2910c830cb --- /dev/null +++ b/src/Symfony/Bridge/Twig/Extension/CsrfRuntime.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bridge\Twig\Extension; + +use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; + +/** + * @author Christian Flothmann + * @author Titouan Galopin + */ +class CsrfRuntime +{ + private $csrfTokenManager; + + public function __construct(CsrfTokenManagerInterface $csrfTokenManager) + { + $this->csrfTokenManager = $csrfTokenManager; + } + + public function getCsrfToken(string $tokenId): string + { + return $this->csrfTokenManager->getToken($tokenId)->getValue(); + } +} diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/security_csrf.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/security_csrf.xml index e7bcec1c5fa3..d13e3c7fab73 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/security_csrf.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/security_csrf.xml @@ -22,9 +22,13 @@ + + + + + -