<?php namespace App\EventSubscriber; use App\Controller\TokenAuthenticatedController; use App\Repository\UserRepository; use App\Repository\UserTokenRepository; use App\Response\Json\ErrorJsonResponse; use App\Response\Json\SuccessJsonResponse; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\FilterControllerEvent; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\KernelEvents; class TokenSubscriber implements EventSubscriberInterface { private $tokens; /** * @var UserTokenRepository */ private $userTokenRepository; /** * @var UserRepository */ private $userRepository; public function __construct( UserRepository $userRepository, UserTokenRepository $userTokenRepository ) { $this->userRepository = $userRepository; $this->userTokenRepository = $userTokenRepository; } public function onKernelController(FilterControllerEvent $event) { $controller = $event->getController(); // when a controller class defines multiple action methods, the controller // is returned as [$controllerInstance, 'methodName'] if (is_array($controller)) { $controller = $controller[0]; } if (in_array("App\Controller\TokenAuthenticatedController", class_implements($controller))) { $user = $this->userRepository->getAuthUser($this->userTokenRepository); if (!is_object($user)) { return new ErrorJsonResponse("Пожалуйста авторизуйтесь.", [ ], 403); } die("we have token. go next"); } else { var_dump($controller); die; } } public static function getSubscribedEvents() { return [ KernelEvents::CONTROLLER => 'onKernelController', ]; } }
You have javascript disabled. You will not be able to edit any code.