<?php
namespace Familia2\MainBundle\Controller;
use Familia2\Domain\Model\User\Token;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction()
{
return new RedirectResponse($this->getParameter('main_domain'));
}
/**
* @Route("/set_redirect/{url}", name="set_redirect", requirements={"url"=".+"})
**/
public function setRedirectAction(Request $request, $url)
{
$session = $request->getSession();
$session->set('RedirectUrl', $url);
$response = array('success' => true);
return new Response(json_encode($response));
}
/**
* @Route("/login_redirect", name="login_redirect")
*/
public function loginRedirectAction(Request $request)
{
$session = $request->getSession();
if ($session->has('RedirectUrl')) {
$url = $session->get('RedirectUrl');
$session->remove('RedirectUrl');
} else {
$url = $this->generateUrl('homepage');
}
return $this->redirect($url);
}
/**
* @Route("/contacto", name="contact_page")
*/
public function contactoAction()
{
return $this->render('Familia2MainBundle:Default:contacto.html.twig');
}
/**
* @Route("/aviso-legal", name="aviso_legal_page")
*/
public function avisoLegalAction()
{
return $this->render('Familia2MainBundle:Default:aviso-legal.html.twig');
}
/**
* @Route("/preguntas-frecuentes", name="preguntas_frecuentes_page")
*/
public function preguntasfrecuentesAction()
{
return $this->render('Familia2MainBundle:Default:preguntas-frecuentes.html.twig');
}
/**
* @Route("/como-funciona/soy-cuidador", name="como_funciona_cuidador_page")
*/
public function comoFuncionaCuidadorAction()
{
return $this->render('Familia2MainBundle:Default:como-funciona--cuidador.html.twig');
}
/**
* @Route("/ventajas/soy-cuidador", name="ventajas_cuidador_page")
*/
public function ventajasCuidadorAction()
{
return $this->render('Familia2MainBundle:Default:ventajas--cuidador.html.twig');
}
/**
* @Route("/ventajas/busco-cuidador", name="ventajas_cliente_page")
*/
public function ventajasClienteAction()
{
return $this->render('Familia2MainBundle:Default:ventajas--cliente.html.twig');
}
/**
* @Route("/admin/login_as/{id}", name="admin_login_as")
*/
public function loginAsAction($id)
{
$response = new RedirectResponse('/');
$user = $this->getUser();
if ($user->isAdmin()) {
$em = $this->get('user_manager');
$user = $em->find($id);
$providerKey = $this->container->getParameter('fos_user.firewall_name');
$userToken = new UsernamePasswordToken($user, null, $providerKey, $user->getRoles());
$this->get('security.token_storage')->setToken($userToken);
$token = new Token($this->get('uuid_generator')->generate(), $user);
$user->addToken($token);
$em->save($user);
$userGroups = $this->get('service.user.get_groups')->execute($user);
$tokenCookie = new Cookie(
'user_token',
$token->getToken(),
time() + (86400 * 30),
'/',
$this->getParameter('cookie.domain'),
false,
false
);
$groupCookie = new Cookie(
'userGroup',
implode(",", $userGroups),
time() + (86400 * 30),
'/',
$this->getParameter('cookie.domain'),
false,
false
);
$response->headers->setCookie($tokenCookie);
$response->headers->setCookie($groupCookie);
}
return $response;
}
}