I would like to configure redirection after login according to user role.
FYI: I am using symfony 2.8
I create this class:
<?php namespace Users\UsersBundle\Redirection; use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Security; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\Routing\RouterInterface; class AfterLoginRedirection implements AuthenticationSuccessHandlerInterface { protected $router; protected $security; public function __construct(Router $router, Security $security) { $this->router = $router; $this->security = $security; } public function onAuthenticationSuccess(Request $request, TokenInterface $token) { if ($this->security->isGranted('ROLE_SUPER_ADMIN')) { $response = new RedirectResponse($this->router->generate('_homepage_admin')); } else { $referer_url = $request->headers->get('referer'); $response = new RedirectResponse($referer_url); } return $response; } }
Create this service:
services: redirect.after.login: class: Users\UsersBundle\Redirection\AfterLoginRedirection arguments: [@router]
I changed the firewall
firewalls: main: pattern: ^/ form_login: login_path: fos_user_security_login check_path: fos_user_security_check provider: fos_userbundle csrf_provider: form.csrf_provider success_handler: redirect.after.login logout: path: /users/logout target: / anonymous: true
And I got this error:
Fatal error being truncated: argument 1 passed Users \ UsersBundle \ Redirection \ AfterLoginRedirection :: __ construct () must be an instance of Users \ UsersBundle \ Redirection \ Router, instance of the Symfony \ Bundle \ FrameworkBundle \ Routing \ Router package called by C: \ wamp \ www \ eCommerce \ app \ cache \ dev \ appDevDebugProjectContainer.php on line 2060 and defined
What did I miss? Any hints or tips?
Thanks.
source share