Monoforms

Redirect después del login con Symfony 4.3


symfony 1 1 2

En la chamba se me presentó el requerimiento de que un usuario con cierto ROL debería ser redirigido a una ruta exclusiva para estos usuarios.

Con la ayuda del grupo de slack de PHPMX pude sacar este requerimiento. Esto es en Symfony 4.3.

En el guard authenticator: LoginFormAuthenticator, lo que hice fue inyectar el servicio security.authorization_checker

use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;

class LoginFormAuthenticator

{
    protected $authorizationChecker;

    public function __construct(AuthorizationCheckerInterface $authorizationChecker)
    {
        $this->authorizationChecker = $authorizationChecker;
    }

    // ...
}

Luego en elonAuthenticationSuccess agregué mi lógica:

public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
   // Aquí redirigir
   if ($this->authorizationChecker->isGranted('ROLE_CLIENT_MANAGER')) {
       return new RedirectResponse(
           $this->urlGenerator->generate('dashboard-authorized-change-result')
       );
   }

   if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
       return new RedirectResponse($targetPath);
   }

   return new RedirectResponse($this->urlGenerator->generate('index'));
}

Por último en el controller donde definí mi ruta con route annotations le agregué el nombre de la ruta para que no me saliera un mensaje diciendo que la ruta no existe.

/**
* @Route("/dashboard-authorized-change-result", name="dashboard-authorized-change-result")
*/

Espero sea de ayuda.

Saludos.


...
Monoforms ©2021 Created by Pedro Rojas Reyes