Como loguear un usuario en Symfony2
Hace un tiempo Jon nos explicaba como desloguear un usuario mediante programación en Symfony2, hoy yo os cuento lo contrario, como loguear al usuario manualmente. La necesidad me surgió al implementar el login con Facebook y con Twitter en una aplicación y como puede resultar útil en otras ocasiones me lo apunto aquí.
// src/Acme/HelloBundle/Controller/HelloController.php
namespace Acme\HelloBundle\Controller;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
// ...
class HelloController
{
public function barAction($foo)
{
// ...
// Tienes que crear la entidad del usuario que quieres loguear, por ejemplo
$em = $this->getDoctrine()->getEntityManager();
$user = $em->getRepository('AcmeHelloBundle:User')->find($userId);
// Si usas FOSUserBundle puedes sacar así el $providerKey
$providerKey = $this->container->getParameter('fos_user.firewall_name');
// Si no, puedes simplemente poner el nombre del firewall de tu aplicación
$providerKey = 'main';
// Si usas FOSUserBundle y has creado la entidad puedes sacar así los roles del user
$roles = $user->getRoles();
// Si no puedes hacerlo manualmente
$roles = array('ROLE_USER');
// Finalmente logueamos al usuario
$token = new UsernamePasswordToken($user, null, $providerKey, $roles);
$this->container->get('security.context')->setToken($token);
// Y si lo crees necesario le rediriges con un mensajito
$this->get("session")->setFlash('info', $this->get('translator')->trans('flash.logged_successfully'));
return $this->redirect($this->generateUrl('homepage'));
// ...
}
}
Creo que no es mucho y que es sufientemente claro como para entenderlo sin más explicación que los comentarios del propio código, así que ahí queda. Si aún así os surge alguna dudilla que os pueda resolver hacedla en los comentarios, y con un poco de suerte y tiempo os contesto.
PD: Esta es mi inocentada, que creais que voy a retomar el blog como propósito de 2012 :p
PD2: Hoy estoy que lo doy todo, he programado otro post para la semana que viene.
Tags:
Si supieras la de tiempo que me he tirado para conseguir loguearme con Facebook y lo complicado que lo tengo (y encima no funciona del todo bien)!
Gracias por este post.
#1 - Publicado hace 1 mes y 3 semanas por proclamo