src/EventListener/UserDataCompletionListener.php line 30

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: uwethiess
  5.  * Date: 30.01.17
  6.  * Time: 14:28
  7.  */
  8. namespace App\EventListener;
  9. use App\Controller\RequireFullUserdataController;
  10. use App\Entity\User;
  11. use Symfony\Component\HttpFoundation\RedirectResponse;
  12. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  13. use Symfony\Component\Routing\RouterInterface;
  14. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
  15. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  16. class UserDataCompletionListener
  17. {
  18.     /** @var TokenStorage  */
  19.     private $storage;
  20.     /** @var  RouterInterface */
  21.     private $router;
  22.     
  23.     public function __construct(TokenStorageInterface $storageRouterInterface $router)
  24.     {
  25.         $this->storage $storage;
  26.         $this->router $router;
  27.     }
  28.     
  29.     public function onKernelController(ControllerEvent $event) {
  30.         $controller $event->getController();
  31.         if (!is_array($controller)) {
  32.             return;
  33.         }
  34.         if ($controller[0] instanceof RequireFullUserdataController) {
  35.             if ($this->storage->getToken()) {
  36.                 /** @var User $user */
  37.                 $user $this->storage->getToken()->getUser();
  38.                 if ($user instanceof User && $user->getId()) {
  39.                     //only check if user is logged on
  40.                     $isComplete $user->isUserdataComplete();
  41.                     if (!$isComplete) {
  42.                         $redirectUrl $this->router->generate('user_edit');
  43.                         $event->setController(function () use ($redirectUrl) {
  44.                             return new RedirectResponse($redirectUrl);
  45.                         });
  46.                     }
  47.                 }
  48.             }
  49.         }
  50.     }
  51.     
  52. }