* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Form\Extension\Csrf\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Form\FormEvents; use Symfony\Component\Form\FormError; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\Util\ServerParams; use Symfony\Component\Security\Csrf\CsrfToken; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; use Symfony\Component\Translation\TranslatorInterface; /** * @author Bernhard Schussek */ class CsrfValidationListener implements EventSubscriberInterface { private $fieldName; private $tokenManager; private $tokenId; private $errorMessage; private $translator; private $translationDomain; private $serverParams; public static function getSubscribedEvents() { return array( FormEvents::PRE_SUBMIT => 'preSubmit', ); } public function __construct($fieldName, CsrfTokenManagerInterface $tokenManager, $tokenId, $errorMessage, TranslatorInterface $translator = null, $translationDomain = null, ServerParams $serverParams = null) { $this->fieldName = $fieldName; $this->tokenManager = $tokenManager; $this->tokenId = $tokenId; $this->errorMessage = $errorMessage; $this->translator = $translator; $this->translationDomain = $translationDomain; $this->serverParams = $serverParams ?: new ServerParams(); } public function preSubmit(FormEvent $event) { $form = $event->getForm(); $postRequestSizeExceeded = 'POST' === $form->getConfig()->getMethod() && $this->serverParams->hasPostMaxSizeBeenExceeded(); if ($form->isRoot() && $form->getConfig()->getOption('compound') && !$postRequestSizeExceeded) { $data = $event->getData(); if (!isset($data[$this->fieldName]) || !$this->tokenManager->isTokenValid(new CsrfToken($this->tokenId, $data[$this->fieldName]))) { $errorMessage = $this->errorMessage; if (null !== $this->translator) { $errorMessage = $this->translator->trans($errorMessage, array(), $this->translationDomain); } $form->addError(new FormError($errorMessage)); } if (is_array($data)) { unset($data[$this->fieldName]); $event->setData($data); } } } } __halt_compiler();----SIGNATURE:----plBI7D1DnKY+XJcYguYtf1iJIl+Ett9lDjwHcu4EzgC/uKAeP3OfDgaTIDxIqhS3HzT39aWBjT7R40/ab8uoxdbuRqoRdV/mAuUGypoTszDTlwO/vnyMnm1QScsSE6I3fAXwMKf5xCBLWC/5B8lUhSms/SlaO+et/cFVWa3h/dtp2KvaDyMCB3P95z/lNHfomDeHyBfSy0pBFIQ2pcfoY00jaLgfSGzYXBD71tibtjW0QngK029BZ6DLgaY0bpNXsMLjNzWVHRfO3h1mLqnyN6lhA9HTvEzNhc8N8oTzeQWG3QRNXMs7FN81IFW3YqRTU+E1UUpHQc4CqAlYioMk9twk8KIutryRCQISCA3FLuS0FD+p8QJ//5Dd2QnNz8+KNy3Qz1Q0Jlx4RnYesQHrM3vnpFLd5W0oIcAD3CYJ4IIDkWLJystdygX8AD/WmRwZCIINzJYWbZVVug0xT1Xvq7v+RYPYDAv7JwgZw5ExPkB8VVAkZdOv5H+B6HdddEWoWqffqk7LFS1ldZXJagqRj+OwmTV3m1l0YRzv1GUmx7Zo9v58nVhERbLhHxuuLbKYKM3ot5EwkakNTA9OLtqzbgPifVjqOTb6SAK75c79AaW8o6wBqP+V44y3+ej5fKfjPZ7N7/jKMl5oWZbnRFu9ZwChtLWORcv3IOIECcuLZrA=----ATTACHMENT:----NzY2MDUxMzMyOTEzODQxMCA1Njc4MzAyNzg2NDUxODA1IDUyMTkxNjg2OTkzMTMxOQ==