<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use App\Form\ContactType;
use App\Model\User;
use App\Entity\Auditoria;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use App\Form\ChangePasswordType;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use App\Model\EnvioEmail;
class DefaultController extends AbstractController
{
/**
* Lists all Usuarios entities.
*
* @Route("/inicio", name="inicio")
* @Template()
*/
public function indexAction(Request $request)
{
$session = $request->getSession();
$name=$session->get('nombreusuario');
return $this->render('Default/index.html.twig', array('usuario' => $name));
}
private function createCreateForm()
{
$form = $this->createForm(ContactType::class, null, array(
'action' => $this->generateUrl('inventario_create'),
'method' => 'POST',
));
// $form->add('submit', SubmitType::class, array('label' => 'Create'));
return $form;
}
/**
* Lists all Usuarios entities.
*
* @Route("/login", name="login")
* @Template()
*/
public function loginAction(Request $request)
{
// $form = $this->get('form.factory')->create(new ContactType());
$form = $this->createCreateForm();
// $request = $this->get('request');
if ($request->getMethod() == 'POST') {
$form->handleRequest($request);
if ($form->isValid()) {
$data = $form->getData();
$username = $data['usuario'];
$clave = $data['clave'];
$clave=md5($clave);
$em = $this->getDoctrine()->getManager();
if (User::autenticar($username, $clave,$em)) {
$infoUser=User::getinfoUser($username,$em);
$securityContext = $this->container->get('security.token_storage');
$rol=User::getRolByUser($infoUser[0]->getTipousuarios()->getId(),$em);
$token = new UsernamePasswordToken($username, $clave, "secured_area", array($rol->getRol()));
$securityContext->setToken($token);
$session = $request->getSession();
$session->set('_security_secured_area', serialize($token));
$session->set('userid', $infoUser[0]->getId());
$session->set('username', $username);
$session->set('atiendevip', $infoUser[0]->getAtiendevip());
$session->set('nombreusuario', $infoUser[0]->getNombres());
$auditoria = new Auditoria();
$user = $this->container->get('security.token_storage')->getToken()->getUser();
$auditoria->setUsuarios($infoUser[0]);
$auditoria->setEvento("login_valido");
$fecha=date('Y-m-d H:i:s');
$auditoria->setFechaevento(new \DateTime($fecha));
$em2 = $this->getDoctrine()->getManager();
$em2->persist($auditoria);
$em2->flush();
}
else
{
$this->get('session')->getFlashBag()->set('warning', 'Usuario o clave incorrecta!!!!');
return new RedirectResponse($this->generateUrl('bufete_acceso_login'));
}
$esAfiliado = $this->isGranted('ROLE_AFILIADO');
if ($esAfiliado)
return new RedirectResponse($this->generateUrl('cotasegurados_new'));
else
return new RedirectResponse($this->generateUrl('home'));
}
else
{
$logger = $this->get('logger');
$logger->err('credenciales invalidas');
echo "form invalido";
}
}
return $this->render('Default/login.html.twig', array(
'form' => $form->createView(),
));
}
public function changePasswordAction(Request $request,MailerInterface $mailer)
{
$form = $this->get('form.factory')->create(ChangePasswordType::class);
// $request = $this->get('request');
$session = $request-> getSession();
if ($request->getMethod() == 'POST') {
$form->handleRequest($request);
if ($form->isValid()) {
$data = $form->getData();
$claveactual = $data['claveactual'];
$clavenueva = $data['clavenueva'];
$repitaclavenueva = $data['repitaclavenueva'];
$em = $this->getDoctrine()->getManager();
$usuario=User::buscaruserbyuserid($session->get('userid'),$em);
if ($usuario)
{
if(trim($clavenueva)==trim($repitaclavenueva))
{
if($clave=md5(trim($claveactual))==$usuario->getClave())
{
$cambio=User::Cambiarclave($usuario,trim($clavenueva),$em);
if ($usuario->getEmail()!="")
{
$asunto="CSL: Cambio de contraseña de acceso. !";
$mensaje="Su contraseña fue actualizada de forma corracta, si usted no realizó este cambio por favor comuniquese con nuestros operadores.";
EnvioEmail::EnviarEmail($usuario->getEmail(),$asunto,$mensaje,$mailer);
}
$this->get('session')->getFlashBag()->add('success', 'La clave fue cambiada correctamente');
}
else
{
$this->get('session')->getFlashBag()->add('warning', 'La clave actual que ingreso no coincide con la registrada en el sistema');
}
}
else
{
$this->get('session')->getFlashBag()->add('warning', 'La clave nueva debe coincidir con el campo repita clave nueva');
}
}
else
{
$this->get('session')->getFlashBag()->add('error', 'No se encontro la data del usuario autenticado intente autenticarse de nuevo');
}
}
}
return $this->render('Default/changepassword.html.twig', array(
'form' => $form->createView(),
));
}
// public function logoutAction(Request $request)
// {
// $session=$request->getSession();
// $session->
// }
}