- <?php
- /*
-  * This file is part of the FOSUserBundle package.
-  *
-  * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
-  *
-  * For the full copyright and license information, please view the LICENSE
-  * file that was distributed with this source code.
-  */
- namespace FOS\UserBundle\EventListener;
- use FOS\UserBundle\FOSUserEvents;
- use Symfony\Component\EventDispatcher\EventSubscriberInterface;
- use Symfony\Component\HttpFoundation\RequestStack;
- use Symfony\Component\HttpFoundation\Session\Session;
- use Symfony\Contracts\EventDispatcher\Event;
- use Symfony\Contracts\Translation\TranslatorInterface;
- /**
-  * @internal
-  *
-  * @final
-  */
- class FlashListener implements EventSubscriberInterface
- {
-     /**
-      * @var string[]
-      */
-     private static $successMessages = [
-         FOSUserEvents::CHANGE_PASSWORD_COMPLETED => 'change_password.flash.success',
-         FOSUserEvents::PROFILE_EDIT_COMPLETED => 'profile.flash.updated',
-         FOSUserEvents::REGISTRATION_COMPLETED => 'registration.flash.user_created',
-         FOSUserEvents::RESETTING_RESET_COMPLETED => 'resetting.flash.success',
-     ];
-     /**
-      * @var RequestStack
-      */
-     private $requestStack;
-     /**
-      * @var TranslatorInterface
-      */
-     private $translator;
-     /**
-      * FlashListener constructor.
-      */
-     public function __construct(RequestStack $requestStack, TranslatorInterface $translator)
-     {
-         $this->translator = $translator;
-         $this->requestStack = $requestStack;
-     }
-     public static function getSubscribedEvents(): array
-     {
-         return [
-             FOSUserEvents::CHANGE_PASSWORD_COMPLETED => 'addSuccessFlash',
-             FOSUserEvents::PROFILE_EDIT_COMPLETED => 'addSuccessFlash',
-             FOSUserEvents::REGISTRATION_COMPLETED => 'addSuccessFlash',
-             FOSUserEvents::RESETTING_RESET_COMPLETED => 'addSuccessFlash',
-         ];
-     }
-     /**
-      * @param string $eventName
-      *
-      * @return void
-      */
-     public function addSuccessFlash(Event $event, $eventName)
-     {
-         if (!isset(self::$successMessages[$eventName])) {
-             throw new \InvalidArgumentException('This event does not correspond to a known flash message');
-         }
-         $this->getSession()->getFlashBag()->add('success', $this->trans(self::$successMessages[$eventName]));
-     }
-     private function getSession(): Session
-     {
-         $request = $this->requestStack->getCurrentRequest();
-         if (null === $request) {
-             throw new \LogicException('Cannot get the session without an active request.');
-         }
-         return $request->getSession();
-     }
-     /**
-      * @param string $message
-      */
-     private function trans($message): string
-     {
-         return $this->translator->trans($message, [], 'FOSUserBundle');
-     }
- }
-