src/Controller/Seguridades/AuthController.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Seguridades;
  3. use App\Controller\InformacionGeneralController;
  4. use App\Entity\Seguridades\GrupoCargo;
  5. use App\Entity\Seguridades\IntentosAcceso;
  6. use App\Entity\Seguridades\Usuario;
  7. use App\Entity\TalentoHumano\CargoRolUo;
  8. use App\Entity\TalentoHumano\Persona;
  9. use App\Entity\TalentoHumano\RelacionLaboral;
  10. use App\Entity\VinculacionSociedad\ContactosEmpresa;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  13. use Symfony\Component\HttpFoundation\{Request};
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use App\Service\{AdminServiceCacheServiceEmailServiceLoginService};
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use Symfony\Component\Form\Extension\Core\Type\{SubmitTypeTextType};
  18. use Symfony\Component\Security\Core\User\UserInterface;
  19. class AuthController extends AbstractController
  20. {
  21.     public function index(AuthenticationUtils $authenticationUtilsRequest $requestEntityManagerInterface $emCacheService $cacheLoginService $login)
  22.     {      
  23.         //$informacionGeneral = new InformacionGeneralController($em);
  24.         //$logoUrl = $informacionGeneral->getLogoUrl();
  25.         $message='';
  26.         $error $authenticationUtils->getLastAuthenticationError();
  27.         $lastUsername $authenticationUtils->getLastUsername(); 
  28.         if($error):
  29.             $user=$login->checkUser($lastUsername,$em);
  30.             if($user):
  31.                 $cache->add('lastUsername',$lastUsername);
  32.                 if($user['active']):    
  33.                     if(!$user['bloqueado']):  
  34.                         
  35.                         $message $login->checkAttemps($user,$em);
  36.                         
  37.                         if(!$message):
  38.                             return $this->redirectToRoute('bloqueado');
  39.                         endif;
  40.                     else:
  41.                         return $this->redirectToRoute('usuarioBloqueado');
  42.                     endif;
  43.                 else:
  44.                     $cache->add('inactivo',true);
  45.                     return $this->redirectToRoute('inactivo');
  46.                 endif;
  47.             else:
  48.                 $message 'Usuario/Contraseña Incorrectos';    
  49.             endif;
  50.         endif;  
  51.         return $this->render('Seguridades/auth/login/login.html.twig', [
  52.             'error' => $error,
  53.             'last_username' => $lastUsername,
  54.             'message'=> $message,
  55.             'logoUrl'=> 'assets/img/Avatar_profileJPG.jpg'
  56.         ]);
  57.     }
  58.     /**
  59.      * @Route("/loginGmail", name="loginGmail")
  60.      */
  61.     public function loginGmail(EntityManagerInterface $em){
  62.        return $this->redirectToRoute('home');
  63.       }
  64.      //--------------------------------------------------------------------------------------------------------------  
  65.   
  66.     public function inactivo(CacheService $cache)
  67.     { 
  68.         if($cache->get('inactivo') && $cache->get('lastUsername')):
  69.             $cache->delete('lastUsername');$cache->delete('inactivo'); 
  70.             return $this->render('Seguridades/auth/inactivo.html.twig');
  71.         else:
  72.             return $this->redirectToRoute('login');
  73.         endif;
  74.     }
  75.     public function usuarioBloqueado(CacheService $cache)
  76.     { 
  77.         if($cache->get('lastUsername')):
  78.             $cache->delete('lastUsername');
  79.             return $this->render('Seguridades/auth/bloqueado.html.twig');
  80.         else:
  81.             return $this->redirectToRoute('login');
  82.         endif;
  83.     }
  84.   //--------------------------------------------------------------------------------------------------------------  
  85.     
  86.     public function bloqueado(LoginService $login,CacheService $cache,EntityManagerInterface $em)
  87.     {       
  88.         $user $cache->get('lastUsername');
  89.         if($user)://verificamos si existe un correo en cache
  90.             $cache->delete('lastUsername');
  91.             $user $em->getRepository(Usuario::class)->findOneBy(['usuario'=>$user]);
  92.             
  93.             $dataPerson $this->getDataUser($user);
  94.             $login->sendEmailBloqueo($dataPerson,$em);
  95.             
  96.             //Cambia el estado del usuario
  97.             $login->setStateUser($user,$em);
  98.             $correo $user->getIdPersona()->getMailPersonal();
  99.             $correo substr($correo0,5); $correo .= 'XXXXXXX';
  100.             $this->removeAttempsUser($em,$user);
  101.             return $this->render('Seguridades/auth/comprobar.html.twig',[
  102.                 'nombres'=>$dataPerson['nombres'], 
  103.                 'apellido1'=>$dataPerson['apellido1'], 
  104.                 'apellido2'=>$dataPerson['apellido2'],
  105.                 'correo'=>$correo
  106.             ]);
  107.         else:
  108.             return $this->redirectToRoute('login');
  109.         endif;            
  110.     }   
  111.     private function removeAttempsUser(EntityManagerInterface $emUsuario $user){
  112.         $attemp $em->getRepository(IntentosAcceso::class)->findOneBy(['idUsuario'=>$user->getId()]);
  113.         $em->remove($attemp);$em->flush();
  114.     }
  115.     /**
  116.      * @Route("/newPassMail", name="newPassMail")
  117.      */
  118.     public function newPassMail(Request $requestLoginService $loginEntityManagerInterface $em){
  119.         $response = ['response' => false'message' => 'El usuario se encuentra inactivo'];
  120.         $idUsuario $request->request->get('idUsuario');
  121.         $user $em->getRepository(Usuario::class)->find($idUsuario);
  122.         if ($user && $user->getActivo()) {
  123.             $dataUser $this->getDataUser($user);
  124.             $pass $login->setPasswordUser($user$em);
  125.             $login->SendEmail($dataUser$pass$em);
  126.             $response['response'] = true;
  127.             $response['message'] = 'Clave generada exitosamente';
  128.         }
  129.         return $this->json($response200);
  130.     }
  131.     public function recuperacion(Request $request,LoginService $login,EntityManagerInterface $em)
  132.     {        
  133.         $form $this->createRecForm();
  134.         $form->handleRequest($request);
  135.         $user $message ='';
  136.         if($form->isSubmitted()):    
  137.             $usuario=$form->get('usuario')->getData();
  138.             $user=$login->getUserLog($usuario$em);
  139.             if($user && $user->getActivo()):
  140.                 $datosUser $this->getDataUser($user);
  141.                 $pass=$login->setPasswordUser($user,$em);  
  142.                 $login->SendEmail($datosUser,$pass,$em);
  143.                 return $this->render('Seguridades/auth/recuperar_password.html.twig');
  144.             else:
  145.                 $message "El Usuario no existe o se encuentra Inactivo, porfavor contactarse con el Administrador";
  146.             endif;
  147.             
  148.         endif;
  149.         
  150.         return $this->render('Seguridades/auth/recuperar.html.twig',[
  151.             'form'=> $form->createView(),
  152.             'user'=>$user,
  153.             'message'=>$message
  154.         ]);
  155.     }
  156.     private function getDataUser(Usuario $user){
  157.         return [
  158.             'mail' => $user->getIdPersona()->getMailPersonal(),
  159.             'usuario' => $user->getUsuario(),
  160.             'nombres' => $user->getIdPersona()->getNombres(),
  161.             'apellidos' => $user->getIdPersona()->getApellidos(),
  162.         ];
  163.     }
  164.     
  165.     //Control de Registro de Logeo
  166.     public function accessControl(UserInterface $userEntityManagerInterface $emCacheService $cacheAdminService $adminServiceLoginService $loginSer){
  167.         //Borra los intentos
  168.         $intentosAcceso $em->getRepository(IntentosAcceso::class)->findOneBy(['idUsuario'=>$user->getId()]);    
  169.         if($intentosAcceso): $em->remove($intentosAcceso);$em->flush(); endif;
  170. /*         $cargo = $em->getRepository(RelacionLaboral::class)->findOneBy(['idPersona'=>$user->getIdPersona()->getId()]);
  171.         $grupo = $em->getRepository(GrupoCargo::class)->findOneBy(['idCargosRol'=>$cargo->getIdCargosRol()->getId()]);
  172.  */
  173.         //Comprueba si está activo
  174.         if(!$user->getActivo()):
  175.             $cache->add('lastUsername',$user->getUsername());
  176.             $cache->add('inactivo',true);
  177.             return $this->redirectToRoute('inactivo');
  178.         endif;
  179.         //Comprueba si está Bloqueado
  180.         if($user->getBloqueado()):
  181.             $cache->add('lastUsername',$user->getUsername());
  182.             return $this->redirectToRoute('bloqueado');
  183.         endif;
  184.          //Compueba si tiene que cambiar la contraseña
  185.         if($adminService->checkPassChange($user)):return $this->redirectToRoute('change_pass');endif;
  186.          //Determina que tipo de Usuario acaba de loguearse
  187.          $loginSer->addAccess($user,'home'$em);
  188.          return $this->redirectToRoute('home'); 
  189.         //return $this->redirectToRoute('profile');   
  190.        /*  if($grupo->getIdGrupo()->getNombre() === 'Administradores'):
  191.             $loginSer->addAccess($user,'system', $em);
  192.             return $this->redirectToRoute('system');   
  193.         else:
  194.         endif;  */
  195.     }
  196.     
  197.     private function createRecForm(){
  198.         return $this->createFormBuilder($user = new Usuario)
  199.             ->add('usuario'TextType::class, array(
  200.                 'attr'=>[
  201.                     'class'=>'form-control'
  202.                 ],
  203.                 'mapped'=> false))
  204.             ->add('submit'SubmitType::class, array(
  205.                 'attr'=>[
  206.                     'class'=>'btn btn-primary'
  207.                 ],
  208.                 'label'=> 'Recuperar Cuenta'))
  209.             ->getForm();
  210.     }
  211.     
  212.     
  213. }