ccc

Symfony: Login

LoginController.php:
<?php
namespace edcBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use edcBundle\Entity\usuarios;
use Symfony\Component\HttpFoundation\Request;

class LoginController extends Controller
{
    public function indexAction($name)
    {
        // return $this->render('edcBundle:Default:index.html.twig', array('name' => $name));
    }
   
    // ******************************************
    public function loginAction(Request $request)
    {
        if($request->getMethod()=="POST")
        {
            $email = $request->get("correo");
            $password = $request->get("pass");
            //echo "correo=".$correo."<br>pass=".$pass;exit;
            $user = $this->getDoctrine()->getRepository('edcBundle:usuarios')->findOneBy(array("correo"=>$email,"pass"=>$password));
            if($user)
            {
                $session = $request->getSession();
                $session->set("id", $user->getId());
                $session->set("nombre", $user->getNombre());
                //echo $session->get("nombre");exit;
                return $this->redirect($this->generateUrl('listarPeliculas'));
            }else
            {
                $this->get('session')->getFlashBag()->add(
                        'mensaje',
                        'Los datos ingresados para loguearte no son válidos'
                );
                return $this->redirect($this->generateUrl('login'));
            }
        }
        return $this->render('edcBundle:Login:login.html.twig');
    }
   
    // *********************************************
    public function logoutAction(Request $request)
    {
        $session = $request->getSession();
        $session->clear();
        $this->get('session')->getFlashBag()->add(
                'mensaje',
                'Se ha cerrado sessión exitosamente, gracias por visitarnos'
        );
        return $this->redirect($this->generateUrl('login'));
    }
 }

login.html.twig:
{% extends 'edcBundle::viewEDC.html.twig' %}

{% block body %}

   {% for flashMessage in app.session.flashbag.get('mensaje') %}
    <span class="alert-success">
        {{ flashMessage }}
        <hr />
    </span>
    {% endfor %}
   
    <h1>Ingrese sus datos</h1>
  
  <form class="form-horizontal" role="form" method="post" action="{{path('login')}}">
      <div class="form-group">
        <label for="inputEmail3" class="col-sm-2 control-label">E-Mail</label>
        <div class="col-sm-10">
          <input type="email" name="correo" class="form-control" id="inputEmail3" placeholder="E-Mail" />
        </div>
      </div>
   
      <div class="form-group">
        <label for="inputPassword3" class="col-sm-2 control-label">Password</label>
        <div class="col-sm-10">
          <input type="password" name="pass" class="form-control" id="inputPassword3" placeholder="Password" />
        </div>
      </div>
   
      <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
          <button type="submit" class="btn btn-default">Entrar</button>
        </div>
      </div>
</form>
{% endblock %}

En nuestro Controller añadir este código a los que deban estado logueado:
 public function listarCineastasAction(Request $request)
    {
        // check si está logado
        $session = $request->getSession();
        if(!$session->has("id")) {
            $this->get('session')->getFlashBag()->add(
                    'mensaje',
                    'Debe estar logueado para ver este contenido'
            );
            return $this->redirect($this->generateUrl('login'));
        }
        ...
 }

No hay comentarios:

Publicar un comentario